Compare commits

...

157 Commits

Author SHA1 Message Date
Athou
e2eeba90ef release 3.6.0 2023-06-08 08:46:20 +02:00
Athou
662c0fc6b9 add buttons that communicate with the browser extension (Athou/commafeed-browser-extension#1) 2023-06-07 15:28:16 +02:00
Athou
fafc0619ad add tooltip to action buttons when label is hidden because viewport width is below mobile breakpoint (Athou/commafeed-browser-extension#1) 2023-06-07 11:32:54 +02:00
Athou
3a5dc5d0ed open link on click in expanded mode since we don't need to collapse entry (#1073) 2023-06-07 08:58:50 +02:00
Jérémie Panzer
23a696e644 Merge pull request #1071 from Athou/dependabot/npm_and_yarn/commafeed-client/vite-4.3.9
Bump vite from 4.3.8 to 4.3.9 in /commafeed-client
2023-06-06 10:12:41 +02:00
dependabot[bot]
72cb71a2fb Bump vite from 4.3.8 to 4.3.9 in /commafeed-client
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 4.3.8 to 4.3.9.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v4.3.9/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-06 08:06:36 +00:00
Athou
9b757735b8 a 403 may be returned if the user has been deleted but the session still exists, redirect to welcome page 2023-06-05 18:46:32 +02:00
Athou
6b9f8f268f make /next work in development 2023-06-05 10:17:00 +02:00
Athou
e5b0eb426c change default config to store h2 database in the same directory as the jar 2023-06-04 07:45:01 +02:00
Athou
ea6c83ca33 add link to api documentation on welcome page 2023-06-01 16:12:39 +02:00
Athou
763ce1e4fd correctly invalidate unread count cache when using the next unread servlet 2023-06-01 13:11:19 +02:00
Athou
e748499ed8 Merge branch 'canoine-patch-2' 2023-06-01 08:06:05 +02:00
Athou
e430604528 remove nbsp from label 2023-06-01 08:05:52 +02:00
Athou
5e08c81d12 Merge branch 'patch-2' of https://github.com/canoine/commafeed into canoine-patch-2 2023-06-01 07:58:12 +02:00
Athou
84626e1ef2 release 3.5.0 2023-06-01 07:49:42 +02:00
Athou
191ece0bac update browser extensions link 2023-06-01 07:43:17 +02:00
canoine
24eaff61f2 Update fr/messages.po
Adds, updates and fixes.
2023-06-01 06:25:39 +02:00
Athou
aa5e9bfd83 update readme to point to the new browser extension 2023-05-31 17:55:47 +02:00
Athou
a200147926 remove X-Frame-Options: DENY as it blocks the iframe from the future browser extension 2023-05-31 15:24:17 +02:00
Athou
d6205b7da3 fix typo 2023-05-31 07:36:50 +02:00
Athou
5ecf3e0fbf add setting to disable strict password policy (#1059) 2023-05-31 07:31:40 +02:00
Athou
bb25e0ede6 intellij autofixes 2023-05-31 07:27:24 +02:00
Athou
f5c0e2d375 update documentation: alphabetical ordering is no longer available 2023-05-30 21:22:02 +02:00
Athou
12ab5b1e7b add default value to allow app startup even if the setting is missing in config.yml 2023-05-30 10:53:28 +02:00
Athou
3e6451289f add setting to limit feeds per user 2023-05-30 09:10:20 +02:00
Athou
09d21d88a4 remove usage of deprecated id generator that blocks migration to hibernate 6 2023-05-29 20:36:45 +02:00
Athou
2ec6d0a66a api documentation page no longer requires users to be authenticated 2023-05-28 22:38:57 +02:00
Athou
412fc52f1c add css classes to help with custom css rules (#1061) 2023-05-28 12:57:28 +02:00
Athou
b5e5989604 disable pull-to-refresh on mobile as it messes with vertical scrolling 2023-05-27 19:54:02 +02:00
Athou
105ff46c01 UnitOfWork is now injectable 2023-05-27 19:46:49 +02:00
Athou
f100f3f91a run post login activities in a new transaction to avoid database locks 2023-05-27 19:29:44 +02:00
Athou
45eb436b8f reduce chance of deadlocks 2023-05-27 08:38:23 +02:00
Athou
bf3914e748 remove very slow query 2023-05-27 08:03:36 +02:00
Athou
5df7aaf7cd try to fix redis timeouts (#1060) 2023-05-27 07:58:22 +02:00
Athou
f10cfd7ad0 add feed refresh engine metrics 2023-05-26 15:20:17 +02:00
Athou
0626e5cd7a release 3.4.0 2023-05-26 12:36:31 +02:00
Athou
8846472e6c use our loader and not the default mantine loader 2023-05-26 09:16:21 +02:00
Athou
c20379f376 better separation of read-only fields from form fields on profile page 2023-05-26 09:16:21 +02:00
Athou
f7ad9c9905 refactor donate page 2023-05-26 09:16:21 +02:00
Jérémie Panzer
c2419e19fc Create FUNDING.yml 2023-05-25 13:41:17 +02:00
Athou
a08ea27c2f make sure we don't refresh a feed twice in a row 2023-05-25 09:02:01 +02:00
Athou
a546ae0d53 update translation instructions 2023-05-24 18:53:30 +02:00
Athou
12f8609d79 fix alignment of burger button with the rest of the header on mobile 2023-05-24 16:59:51 +02:00
Athou
e77267e33b Revert "no longer need to ignore locale.ts files as they don't exist anymore", adjusting comment 2023-05-24 08:46:49 +02:00
Athou
b86ff2a32f logging tweaks 2023-05-24 08:20:53 +02:00
Athou
5939f845b3 bump dependencies 2023-05-24 07:53:45 +02:00
Athou
fc8d4f1f67 no longer need to ignore locale.ts files as they don't exist anymore 2023-05-24 07:52:04 +02:00
Athou
3b03da1bd6 regenerate po files with lingui 4.x (only ordering changed) 2023-05-24 07:46:39 +02:00
Athou
4eacd238fa reduce js bundle size by loading locales dynamically instead of loading all locales 2023-05-23 16:24:35 +02:00
Athou
bc7c50f0f3 fix alignment of icon with text for category tree nodes 2023-05-23 15:27:02 +02:00
Athou
e84a1289e3 remove rxjava as its too magic and very hard to master 2023-05-22 18:28:26 +02:00
Athou
85ebcd6407 add issue templates 2023-05-21 11:18:47 +02:00
Athou
735a1e8b11 add support for arm64 docker images 2023-05-21 07:20:52 +02:00
Athou
6de817f539 release 3.3.2 2023-05-20 14:00:54 +02:00
Athou
08a2746921 restore entry selection indicator 2023-05-19 10:37:59 +02:00
Athou
bc28727e39 remove warnings 2023-05-17 16:14:21 +02:00
Athou
eceaf3a98d remove lodash to reduce bundle size by 100kb 2023-05-17 16:11:32 +02:00
Athou
4a8939e5e5 optimized png sizes 2023-05-17 15:47:22 +02:00
Athou
e90b80c641 send GA pageviews only if initialized 2023-05-17 13:43:25 +02:00
Athou
2979600cc2 add dividers to separate read-only information from forms 2023-05-11 11:45:23 +02:00
Athou
a2deef7f7f release 3.3.1 2023-05-10 20:26:45 +02:00
Athou
b5097d4fc3 fix long feed names not being shortened to respect tree max width (#1055) 2023-05-10 20:25:50 +02:00
Athou
f858eed150 release 3.3.0 2023-05-10 08:34:09 +02:00
Athou
bbdd712b01 compiler is only needed in the java module 2023-05-09 14:45:19 +02:00
Athou
c0875971e9 no longer need to insert code between imports 2023-05-08 17:30:32 +02:00
Athou
0199ebb6c3 major mantine update 2023-05-08 17:30:32 +02:00
Athou
c5763e2f8f update all dependencies 2023-05-08 13:42:16 +02:00
Athou
5338ec0c34 lingui major update 2023-05-08 13:38:27 +02:00
Athou
8b5735f521 use Trans as much as possible to ease lingui upgrade to 4.0 2023-05-08 12:51:51 +02:00
Athou
3d1a1cd033 add support for custom js code that will be executed on page load (#1032) 2023-05-05 20:23:23 +02:00
Athou
b1b5eeb0e0 delete removed settings 2023-05-05 17:50:06 +02:00
Athou
49e37587f9 show alert on error 2023-05-05 14:56:53 +02:00
Athou
01102ae973 use absolute imports 2023-05-05 14:55:03 +02:00
Athou
e7931bf360 call reload() only once 2023-05-05 14:47:15 +02:00
Athou
d095e4b35a restore custom css setting (#1024) 2023-05-05 14:12:31 +02:00
Athou
b8e254dab6 release 3.2.0 2023-05-05 11:04:41 +02:00
Athou
4059160d90 update changelog 2023-05-05 11:04:04 +02:00
Athou
e0f242fe22 add welcome page 2023-05-05 09:55:53 +02:00
Athou
05453364ff only apply hover effect for unread entries (same as commafeed v2) 2023-05-05 09:36:23 +02:00
Athou
c3aedd935d move notifications out of the way (#1054) 2023-05-05 09:36:23 +02:00
Athou
99a7f72448 use https for sharing urls 2023-05-04 13:04:30 +02:00
Athou
56ae1eadbc enable redis connections with ACLs 2023-05-04 09:12:02 +02:00
Athou
4828c03bbf restore google analytics feature 2023-05-03 20:49:28 +02:00
Athou
cfc07764b4 extract changelog entry when creating a release 2023-05-02 12:05:20 +02:00
Athou
91938cc3b9 create GitHub release after Docker image has been published 2023-05-01 18:37:18 +02:00
Athou
c62a84a9ea update dependency groups that were moved 2023-05-01 18:34:05 +02:00
Athou
0b16b6bb86 release 3.1.0 2023-05-01 18:25:16 +02:00
Athou
6a8f7f0a40 add release script 2023-05-01 18:23:35 +02:00
Athou
42ca0967b6 create release on tag 2023-05-01 17:39:01 +02:00
Athou
deb29f0e88 fix metrics page 2023-05-01 17:07:17 +02:00
Athou
714af986b0 readme update 2023-05-01 17:05:38 +02:00
Athou
4ff26366a5 there's no need to update disabledUntil here anymore because findNextUpdatableFeeds will always be called when the queue is empty 2023-05-01 10:04:43 +02:00
Athou
9c628a8f53 make each step of feed fetching return its own model 2023-05-01 09:58:19 +02:00
Athou
4a40f2b8f7 no need to log if we're not sending any notification 2023-04-30 23:05:48 +02:00
Athou
9a2dda626c changelog update 2023-04-30 23:05:48 +02:00
Athou
a9ff491da0 hide request log in production 2023-04-30 16:21:38 +02:00
Athou
5c5a7d20de in production, no need to see warnings 2023-04-30 16:03:47 +02:00
Athou
05ae4eb529 replace homemade threadpool framework with rxjava 2023-04-30 15:34:32 +02:00
Athou
15f93b198c remove warning 2023-04-29 09:20:34 +02:00
Athou
0a99dacb6b use urlcanon instead of crawler4j because we only used it for url canonization 2023-04-29 09:20:15 +02:00
Athou
00f6c04611 various dependency updates 2023-04-29 09:17:59 +02:00
Athou
d9b899b53f prevent entries from having the hover background color when clicked on mobile 2023-04-28 19:44:26 +02:00
Athou
d96f8da8fd remove deprecation warnings (already done in config.yml.example) 2023-04-28 19:44:26 +02:00
Athou
ababcf7850 remove unnecessary "subscriptions" field on Feed
hopefully removes the error that happens sometimes:
Illegal attempt to associate a collection with two open sessions. Collection : [com.commafeed.backend.model.Feed.subscriptions]
2023-04-28 19:44:26 +02:00
Athou
f23bfaf694 use a different color for hover than read and unread backgrounds 2023-04-28 19:44:26 +02:00
Athou
cac05dee0b store view mode in localStorage (#1051) 2023-04-27 14:42:55 +02:00
Athou
155c93d371 reorder Dockerfile to put changing layers last 2023-04-27 09:38:23 +02:00
Athou
9a61ee7530 create a 'master' docker tag for the latest master version 2023-04-27 09:38:23 +02:00
Athou
4bea1c5e5c restore hover effect from commafeed v2 2023-04-27 07:57:09 +02:00
Athou
9ccc26b0b0 tweak compact layout a little bit more 2023-04-27 07:30:43 +02:00
Athou
5cd3787d6f add i18n placeholders for new label 2023-04-26 23:37:39 +02:00
Athou
807b1f62a1 add an even more compact entry layout 2023-04-26 22:50:43 +02:00
Athou
c15db54d5a bump versions 2023-04-26 09:43:10 +02:00
Athou
aa7b078121 readme update 2023-04-25 15:34:20 +02:00
Athou
99130d0181 combine EnvironmentSubstitutor and SubstitutingSourceProvider (#1050) 2023-04-25 10:40:14 +02:00
Athou
90e2036cbe build for armv7 too 2023-04-25 10:24:22 +02:00
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
Athou
9f421ec3b0 add context menu to navigate to feed if a category is displayed 2023-02-27 19:56:32 +01:00
Athou
69fb11eee0 add context menu item to open link in new tab 2023-02-27 07:41:13 +01:00
Athou
ffbb85df43 add context menu on entry headers 2023-02-24 15:18:04 +01:00
Athou
a4e78c4e0d throttle event 2023-02-24 14:53:30 +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
Athou
6d4b0cbdef bump all dependencies 2023-02-04 08:34:23 +01:00
Athou
ea4b120a85 prevent full feed fetching next time we fetch it if caching header values changed but content did not (#1037) 2023-01-27 08:49:59 +01:00
Athou
5c2454c331 bring back "refresh all my feeds" (#1036) 2023-01-19 07:29:19 +01:00
Athou
4ff46965c4 add websocket support to immediately refresh tree when new entries are available 2023-01-18 20:58:45 +01:00
Athou
33e3f7ea3c feeds added manually to the queue now refresh immediately instead of waiting up to 15s (#1036) 2023-01-18 18:53:38 +01:00
Athou
347fc4f2c8 allow to force refresh feed anytime (#1036) 2023-01-18 18:53:38 +01:00
Athou
2b4ff4a8a5 on fetch error and not under heavy load, don't increase refresh interval exponentially 2023-01-18 18:53:38 +01:00
Jorengarenar
f7d34983e0 Allow API key for count of unread 2023-01-10 00:34:25 +01:00
Athou
3271d69fcb allow session configuration (#1028) 2023-01-04 11:32:08 +01:00
Jérémie Panzer
7ea24b21f8 Merge pull request #1023 from Jorengarenar/develop
Enable environment variables in config.yml
2023-01-04 07:26:23 +01:00
Jorengarenar
b2b608e8c3 Enable environment variables in config.yml 2023-01-03 19:46:01 +01:00
Athou
e44ea5bc96 re-add dropwizard-migrations to be able to use liquibase from command line 2022-11-15 10:48:55 +01:00
Athou
fa58b1e53f reload entries after marking everything as read, as commafeed 2.x does 2022-11-15 08:24:18 +01:00
Athou
9466bc544c show placeholder when favicon is loading 2022-11-08 11:57:59 +01:00
Athou
9e65f5726c require src and alt for images 2022-11-08 11:52:47 +01:00
Athou
fc2c3740a0 dependencies update 2022-11-08 11:52:47 +01:00
Athou
2095a6512b make compact mode more compact 2022-11-05 14:13:19 +01:00
Athou
a461a72224 enable maven cache to speed up build 2022-11-04 09:08:21 +01:00
Athou
f9e7653901 restore swipe-to-right to toggle read/unread status (#1019) 2022-11-04 08:57:33 +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
187 changed files with 19319 additions and 20667 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

2
.github/FUNDING.yml vendored Normal file
View File

@@ -0,0 +1,2 @@
github: [athou]
custom: ['https://www.paypal.com/donate/?business=9CNQHMJG2ZJVY&no_recurring=0&item_name=CommaFeed&currency_code=EUR']

33
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file
View File

@@ -0,0 +1,33 @@
---
name: Bug report
about: Create a report to help us improve
title: ""
labels: ""
assignees: ""
---
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Environment (please complete the following information):**
- CommaFeed version (or "commafeed.com"): 3.2.1
- Browser [e.g. chrome, firefox]:
- Device [e.g. desktop, mobile]:
**Additional context**
Add any other context about the problem here.

View File

@@ -0,0 +1,20 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.

View File

@@ -1,27 +1,89 @@
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
- name: Checkout
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
- name: Upload JAR
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
uses: docker/login-action@v2
if: ${{ matrix.java == '8' }}
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Docker build and push tag
uses: docker/build-push-action@v4
if: ${{ matrix.java == '8' && github.ref_type == 'tag' }}
with:
context: .
push: true
platforms: linux/amd64,linux/arm/v7,linux/arm64/v8
tags: |
athou/commafeed:latest
athou/commafeed:${{ github.ref_name }}
- name: Docker build and push master
uses: docker/build-push-action@v4
if: ${{ matrix.java == '8' && github.ref_name == 'master' }}
with:
context: .
push: true
platforms: linux/amd64,linux/arm/v7,linux/arm64/v8
tags: athou/commafeed:master
# Create GitHub release after Docker image has been published
- name: Extract Changelog Entry
uses: mindsers/changelog-reader-action@v2
if: ${{ matrix.java == '8' && github.ref_type == 'tag' }}
id: changelog_reader
with:
version: ${{ github.ref_name }}
- name: Create GitHub release
uses: softprops/action-gh-release@v1
if: ${{ matrix.java == '8' && github.ref_type == 'tag' }}
with:
name: CommaFeed ${{ github.ref_name }}
body: ${{ steps.changelog_reader.outputs.changes }}
draft: false
prerelease: false
files: |
commafeed-server/target/commafeed.jar
commafeed-server/config.yml.example

View File

@@ -1,80 +0,0 @@
v 3.0.0
- complete overhaul of the UI
- backend and frontend are now in separate maven modules
- no changes to the api or the database
v 2.6.0
- add support for media content as a backup for missing content (useful for youtube feeds)
- correctly follow http error code 308 redirects
- fixed a bug that prevented users from deleting their account
- fixed a bug that made commafeed store entry contents multiple times
- fixed a bug that prevented the app to be used as an installed app on mobile devices if the context path of commafeed was not "/"
- fixed a bug that prevented entries from being "marked as read older than xxx" for a feed that was just added
- removed support for google+ and readability as those services no longer exist
- removed support for deploying on openshift
- removed alphabetical sorting of entries because of really poor performance (title cannot be indexed)
- improve performance for instances with the heavy load setting enabled by preventing CommaFeed from fetching feeds from users that did not log in for a long time
- various dependencies upgrades (notably dropwizard from 1.3 to 2.1)
- add support for mariadb
- add support for java17+ runtime
- various security improvements
v 2.5.0
- unread count is now displayed in a favicon badge when supported
- the user agent string for the bot fetching feeds is now configurable
- feed parsing performance improvements
- support for java9+ runtime
- can now properly start from an empty postgresql database
v 2.4.0
- users were not able to change password or delete account
- fix api key generation
- feed entries can now be sorted alphabetically
- fix facebook sharing
- fix layout on iOS
- postgresql driver update (fix for postgres 9.6)
- various internationalization fixes
- security fixes
v 2.3.0
- dropwizard upgrade 0.9.1
- feed enclosures are hidden if they already displayed in the content
- fix youtube favicons
- various internationalization fixes
v 2.2.0
- fix youtube and instagram favicon fetching
- mark as read filter was lost when a feed was rearranged with drag&drop
- feed entry categories are now displayed if available
- various performance and dependencies upgrades
- java8 is now required
v 2.1.0
- dropwizard upgrade to 0.8.0
- you have to remove the "app.contextPath" setting from your yml file, you can optionally use server.applicationContextPath instead
- new setting app.maxFeedCapacity for deleting old entries
- ability to set filtering expressions for subscriptions to automatically mark new entries as read based on title, content, author or url.
- ability to use !keyword or -keyword to exclude a keyword from a search query
- facebook feeds now show user favicon instead of facebook favicon
- new dark theme 'nightsky'
v 2.0.3
- internet explorer ajax cache workaround
- categories are now deletable again
- openshift support is back
- youtube feeds now show user favicon instead of youtube favicon
v 2.0.2
- api using the api key is now working again
- context path is now configurable in config.yml (see app.contextPath in config.yml.example)
- fix login on firefox when fields are autofilled by the browser
- fix scrolling of subscriptions list on mobile
- user is now logged in after registration
- fix link to documentation on home page and about page
- fields autocomplete is disabled on the profile page
- users are able to delete their account again
- chinese and malaysian translation files are now correctly loaded
- software version in user-agent when fetching feeds is no longer hardcoded
- admin settings page is now read only, settings are configured in config.yml
- added link to metrics on the admin settings page
- Rome (rss library) upgrade to 1.5.0
v 2.0.1
- the redis pool no longer throws an exception when it is unable to aquire a new connection
v2.0.0
- The backend has been completely rewritten using Dropwizard instead of TomEE, resulting in a lot less memory consumption and better overall performances.
See the README on how to build CommaFeed from now on.
- CommaFeed should no longer fetch the same feed multiple times in a row
- Users can use their username or email to log in

180
CHANGELOG.md Normal file
View File

@@ -0,0 +1,180 @@
# Changelog
## [3.6.0]
- add a button to open CommaFeed in a new tab and a button to open options when using the browser extension
- clicking on the entry title in expanded mode now opens the link instead of doing nothing
- add tooltips to buttons when the mobile layout is used on desktop
- redirect the user to the welcome page if the user was deleted from the database
- add link to api documentation on welcome page
- the unread count is now correctly updated when using the "/next" bookmarklet while redis cache is enabled
## [3.5.0]
- add compatibility with the new version of the CommaFeed browser extension
- disable pull-to-refresh on mobile as it messes with vertical scrolling
- add css classes to feed entries to help with custom css rules
- api documentation page no longer requires users to be authenticated
- add a setting to limit the number of feeds a user can subscribe to
- add a setting to disable strict password policy
- add feed refresh engine metrics
- fix redis timeouts
## [3.4.0]
- add support for arm64 docker images
- add divider to visually separate read-only information from form on the profile settings page
- reduce javascript bundle size by 30% by loading only the necessary translations
- add a standalone donate page with all ways to support CommaFeed
- fix an issue introduced in 3.1.0 that could make CommaFeed not refresh feeds as fast as before on instances with lots of feeds
- fix alignment of icon with text for category tree nodes
- fix alignment of burger button with the rest of the header on mobile
## [3.3.2]
- restore entry selection indicator (left orange border) that was lost with the mantine 6.x upgrade (3.3.0)
- add dividers to visually separate read-only information from forms on feed and category details pages
- reduced javascript bundle size by 10%
## [3.3.1]
- fix long feed names not being shortened to respect tree max width
## [3.3.0]
- there are now database changes, rolling back to 2.x will no longer be possible
- restore support for user custom CSS rules
- add support for user custom JS code that will be executed on page load
## [3.2.0]
- restore the welcome page
- only apply hover effect for unread entries (same as commafeed v2)
- move notifications at the bottom of the screen
- always use https for sharing urls
- add support for redis ACLs
- transition to google analytics v4
## [3.1.0]
- add an even more compact layout
- restore hover effect from commafeed 2.x
- view mode (compact, expanded, ...) is now stored on the device so you can have a different view mode on desktop and
mobile
- fix for the "Illegal attempt to associate a collection with two open sessions." error
- feed fetching workflow is now orchestrated with rxjava, removing a lot of code
## [3.0.1]
- allow env variable substitution in config.yml
- e.g. having a custom config.yml file with `app.session.path=${SOME_ENV_VAR}` will substitute `SOME_ENV_VAR` with
its value
- allow env variable prefixed with `CF_` to override config.yml properties
- e.g. setting `CF_APP_ALLOWREGISTRATIONS=true` will set `app.allowRegistrations` to `true`
## [3.0.0]
- complete overhaul of the UI
- backend and frontend are now in separate maven modules
- no changes to the api or the database
- Docker images are now automatically built and available at https://hub.docker.com/r/athou/commafeed
## [2.6.0]
- add support for media content as a backup for missing content (useful for youtube feeds)
- correctly follow http error code 308 redirects
- fixed a bug that prevented users from deleting their account
- fixed a bug that made commafeed store entry contents multiple times
- fixed a bug that prevented the app to be used as an installed app on mobile devices if the context path of commafeed
was not "/"
- fixed a bug that prevented entries from being "marked as read older than xxx" for a feed that was just added
- removed support for google+ and readability as those services no longer exist
- removed support for deploying on openshift
- removed alphabetical sorting of entries because of really poor performance (title cannot be indexed)
- improve performance for instances with the heavy load setting enabled by preventing CommaFeed from fetching feeds from
users that did not log in for a long time
- various dependencies upgrades (notably dropwizard from 1.3 to 2.1)
- add support for mariadb
- add support for java17+ runtime
- various security improvements
## [2.5.0]
- unread count is now displayed in a favicon badge when supported
- the user agent string for the bot fetching feeds is now configurable
- feed parsing performance improvements
- support for java9+ runtime
- can now properly start from an empty postgresql database
## [2.4.0]
- users were not able to change password or delete account
- fix api key generation
- feed entries can now be sorted alphabetically
- fix facebook sharing
- fix layout on iOS
- postgresql driver update (fix for postgres 9.6)
- various internationalization fixes
- security fixes
## [2.3.0]
- dropwizard upgrade 0.9.1
- feed enclosures are hidden if they already displayed in the content
- fix youtube favicons
- various internationalization fixes
## [2.2.0]
- fix youtube and instagram favicon fetching
- mark as read filter was lost when a feed was rearranged with drag&drop
- feed entry categories are now displayed if available
- various performance and dependencies upgrades
- java8 is now required
## [2.1.0]
- dropwizard upgrade to 0.8.0
- you have to remove the "app.contextPath" setting from your yml file, you can optionally use
server.applicationContextPath instead
- new setting app.maxFeedCapacity for deleting old entries
- ability to set filtering expressions for subscriptions to automatically mark new entries as read based on title,
content, author or url.
- ability to use !keyword or -keyword to exclude a keyword from a search query
- facebook feeds now show user favicon instead of facebook favicon
- new dark theme 'nightsky'
## [2.0.3]
- internet explorer ajax cache workaround
- categories are now deletable again
- openshift support is back
- youtube feeds now show user favicon instead of youtube favicon
## [2.0.2]
- api using the api key is now working again
- context path is now configurable in config.yml (see app.contextPath in config.yml.example)
- fix login on firefox when fields are autofilled by the browser
- fix scrolling of subscriptions list on mobile
- user is now logged in after registration
- fix link to documentation on home page and about page
- fields autocomplete is disabled on the profile page
- users are able to delete their account again
- chinese and malaysian translation files are now correctly loaded
- software version in user-agent when fetching feeds is no longer hardcoded
- admin settings page is now read only, settings are configured in config.yml
- added link to metrics on the admin settings page
- Rome (rss library) upgrade to 1.5.0
## [2.0.1]
- the redis pool no longer throws an exception when it is unable to aquire a new connection
## [2.0.0]
- The backend has been completely rewritten using Dropwizard instead of TomEE, resulting in a lot less memory
consumption and better overall performances.
See the README on how to build CommaFeed from now on.
- CommaFeed should no longer fetch the same feed multiple times in a row
- Users can use their username or email to log in

13
Dockerfile Normal file
View File

@@ -0,0 +1,13 @@
FROM eclipse-temurin:17-jre
EXPOSE 8082
RUN mkdir -p /commafeed/data
VOLUME /commafeed/data
ENV CF_SESSION_PATH=/commafeed/data/sessions
ENV CF_DATABASE_URL=jdbc:h2:/commafeed/data/db
COPY commafeed-server/config.yml.example config.yml
COPY commafeed-server/target/commafeed.jar .
CMD ["java", "-Djava.net.preferIPv4Stack=true", "-jar", "commafeed.jar", "server", "config.yml"]

108
README.md
View File

@@ -1,99 +1,71 @@
# CommaFeed
Sources for [CommaFeed.com](http://www.commafeed.com/).
Google Reader inspired self-hosted RSS reader, based on Dropwizard and React/TypeScript.
Google Reader inspired self-hosted RSS reader, based on Dropwizard and AngularJS.
CommaFeed is now considered feature-complete and is in maintenance mode.
![preview](https://user-images.githubusercontent.com/1256795/184886828-1973f148-58a9-4c6d-9587-ee5e5d3cc2cb.png)
## Related open-source projects
## Features
Browser extensions:
- [Chrome](https://github.com/Athou/commafeed-chrome)
- [Firefox](https://github.com/Athou/commafeed-firefox)
- [Opera](https://github.com/Athou/commafeed-opera)
- [Safari](https://github.com/Athou/commafeed-safari)
- 4 different layouts
- Dark theme
- Fully responsive
- Keyboard shortcuts for almost everything
- Support for right-to-left feeds
- Translated in 25+ languages
- Supports thousands of users and millions of feeds
- OPML import/export
- REST API
- [Browser extension](https://github.com/Athou/commafeed-browser-extension)
## 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
wget https://raw.githubusercontent.com/Athou/commafeed/3.0.0/commafeed-server/config.yml.example -O config.yml
vi config.yml
wget https://github.com/Athou/commafeed/releases/latest/download/commafeed.jar
wget https://github.com/Athou/commafeed/releases/latest/download/config.yml.example -O 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
./mvnw clean package
cp commafeed-server/config.yml.example config.yml
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
- 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
- add the new locale to the `locales` array in:
- `commafeed-client/.linguirc`
- `commafeed-client/src/i18n.ts`
- run `npm run i18n:extract`
- 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.
- Start `CommaFeedApplication.java` in debug mode with `server config.dev.yml` as arguments
### Frontend
@@ -101,11 +73,13 @@ 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.

View File

@@ -3,4 +3,6 @@ node_modules
vite.config.ts
# compiled linguijs locales
# they no longer exist but we keep this to avoid issues with people still having those files on disk
src/locales/**/*.ts

View File

@@ -70,8 +70,6 @@
"groups": [
"useLocation",
"useParams",
"useStyles",
"useMantineTheme",
"useState",
"useAppSelector",
"useAppDispatch",

View File

@@ -29,5 +29,6 @@ dist-ssr
# vite
vite.config.ts.timestamp-*.mjs
# compiled locales
# compiled linguijs locales
# they no longer exist but we keep this to avoid issues with people still having those files on disk
src/locales/**/*.ts

View File

@@ -48,10 +48,5 @@
"sourceLocale": "en",
"fallbackLocales": {
"default": "en"
},
"extractBabelOptions": {
"presets": [
"@babel/preset-typescript"
]
}
}

View File

@@ -1,14 +1,16 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/x-icon" href="favicon.ico" />
<link rel="manifest" href="manifest.json" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<title>CommaFeed</title>
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/main.tsx"></script>
</body>
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/x-icon" href="favicon.ico" />
<link rel="manifest" href="manifest.json" />
<link rel="stylesheet" href="custom_css.css" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<title>CommaFeed</title>
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/main.tsx"></script>
<script src="custom_js.js"></script>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@@ -1,76 +1,81 @@
{
"name": "commafeed-client",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite",
"build": "npm run i18n:compile && tsc && vite build",
"preview": "vite preview",
"test": "vitest",
"test:ci": "vitest run",
"eslint": "eslint --ext=.js,.jsx,.ts,.tsx src",
"i18n": "npm run i18n:extract && npm run i18n:compile",
"i18n:extract": "lingui extract --clean",
"i18n:compile": "lingui compile --typescript",
"postinstall": "npm run i18n:compile"
},
"dependencies": {
"@emotion/react": "^11.10.5",
"@fontsource/open-sans": "^4.5.13",
"@lingui/core": "^3.14.0",
"@lingui/macro": "^3.14.0",
"@lingui/react": "^3.14.0",
"@mantine/core": "^5.6.3",
"@mantine/form": "^5.6.3",
"@mantine/hooks": "^5.6.3",
"@mantine/modals": "^5.6.3",
"@mantine/notifications": "^5.6.3",
"@mantine/spotlight": "^5.6.3",
"@reduxjs/toolkit": "^1.8.6",
"axios": "^1.1.3",
"dayjs": "^1.11.6",
"interweave": "^13.0.0",
"lodash": "^4.17.21",
"make-plural": "^7.1.0",
"mousetrap": "^1.6.5",
"react": "^18.2.0",
"react-async-hook": "^4.0.0",
"react-dom": "^18.2.0",
"react-icons": "^4.6.0",
"react-infinite-scroller": "^1.2.6",
"react-redux": "^8.0.4",
"react-router-dom": "^6.4.2",
"swagger-ui-react": "^4.15.2",
"tinycon": "^0.6.8"
},
"devDependencies": {
"@lingui/cli": "^3.14.0",
"@types/eslint": "^8.4.8",
"@types/lodash": "^4.14.186",
"@types/mousetrap": "^1.6.10",
"@types/react": "^18.0.24",
"@types/react-dom": "^18.0.8",
"@types/react-infinite-scroller": "^1.2.3",
"@types/swagger-ui-react": "^4.11.0",
"@types/tinycon": "^0.6.3",
"@typescript-eslint/eslint-plugin": "^5.41.0",
"@typescript-eslint/parser": "^5.41.0",
"@vitejs/plugin-react": "^2.2.0",
"eslint": "^8.26.0",
"eslint-config-airbnb": "^19.0.4",
"eslint-config-airbnb-typescript": "^17.0.0",
"eslint-config-prettier": "^8.5.0",
"eslint-config-react-app": "^7.0.1",
"eslint-plugin-hooks": "^0.4.3",
"eslint-plugin-prettier": "^4.2.1",
"prettier": "^2.7.1",
"rollup-plugin-visualizer": "^5.8.3",
"typescript": "^4.8.4",
"vite": "^3.2.0",
"vite-plugin-eslint": "^1.8.1",
"vite-tsconfig-paths": "^3.5.2",
"vitest": "^0.24.3",
"vitest-mock-extended": "^1.0.3"
}
"name": "commafeed-client",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite --host",
"dev:typescript": "tsc --watch",
"build": "tsc && vite build",
"preview": "vite preview",
"test": "vitest",
"test:ci": "vitest run",
"eslint": "eslint --ext=.js,.jsx,.ts,.tsx src",
"i18n:extract": "lingui extract --clean"
},
"dependencies": {
"@emotion/react": "^11.11.0",
"@fontsource/open-sans": "^5.0.1",
"@lingui/core": "^4.1.2",
"@lingui/macro": "^4.1.2",
"@lingui/react": "^4.1.2",
"@mantine/core": "^6.0.11",
"@mantine/form": "^6.0.11",
"@mantine/hooks": "^6.0.11",
"@mantine/modals": "^6.0.11",
"@mantine/notifications": "^6.0.11",
"@mantine/spotlight": "^6.0.11",
"@mantine/styles": "^6.0.11",
"@reduxjs/toolkit": "^1.9.5",
"axios": "^1.4.0",
"dayjs": "^1.11.7",
"interweave": "^13.1.0",
"mousetrap": "^1.6.5",
"react": "^18.2.0",
"react-async-hook": "^4.0.0",
"react-contexify": "^6.0.0",
"react-dom": "^18.2.0",
"react-ga4": "^2.1.0",
"react-icons": "^4.8.0",
"react-infinite-scroller": "^1.2.6",
"react-redux": "^8.0.5",
"react-router-dom": "^6.11.2",
"react-swipeable": "^7.0.0",
"swagger-ui-react": "^4.18.3",
"throttle-debounce": "^5.0.0",
"tinycon": "^0.6.8",
"use-local-storage": "^3.0.0",
"websocket-heartbeat-js": "^1.1.2"
},
"devDependencies": {
"@lingui/cli": "^4.1.2",
"@lingui/vite-plugin": "^4.1.2",
"@types/eslint": "^8.40.0",
"@types/mousetrap": "^1.6.11",
"@types/react": "^18.2.6",
"@types/react-dom": "^18.2.4",
"@types/react-infinite-scroller": "^1.2.3",
"@types/swagger-ui-react": "^4.18.0",
"@types/throttle-debounce": "^5.0.0",
"@types/tinycon": "^0.6.3",
"@typescript-eslint/eslint-plugin": "^5.59.7",
"@typescript-eslint/parser": "^5.59.7",
"@vitejs/plugin-react": "^4.0.0",
"babel-plugin-macros": "^3.1.0",
"eslint": "^8.41.0",
"eslint-config-airbnb": "^19.0.4",
"eslint-config-airbnb-typescript": "^17.0.0",
"eslint-config-prettier": "^8.8.0",
"eslint-config-react-app": "^7.0.1",
"eslint-plugin-hooks": "^0.4.3",
"eslint-plugin-prettier": "^4.2.1",
"prettier": "^2.8.8",
"rollup-plugin-visualizer": "^5.9.0",
"typescript": "^5.0.4",
"vite": "^4.3.9",
"vite-plugin-eslint": "^1.8.1",
"vite-tsconfig-paths": "^4.2.0",
"vitest": "^0.31.1",
"vitest-mock-extended": "^1.1.3"
}
}

View File

@@ -5,7 +5,7 @@
<parent>
<groupId>com.commafeed</groupId>
<artifactId>commafeed</artifactId>
<version>3.0.0</version>
<version>3.6.0</version>
</parent>
<artifactId>commafeed-client</artifactId>
<name>CommaFeed Client</name>

View File

@@ -1,9 +1,9 @@
import { i18n } from "@lingui/core"
import { I18nProvider } from "@lingui/react"
import { ColorScheme, ColorSchemeProvider, MantineProvider } from "@mantine/core"
import { useColorScheme, useLocalStorage } from "@mantine/hooks"
import { useColorScheme } from "@mantine/hooks"
import { ModalsProvider } from "@mantine/modals"
import { NotificationsProvider } from "@mantine/notifications"
import { Notifications } from "@mantine/notifications"
import { Constants } from "app/constants"
import { redirectTo } from "app/slices/redirect"
import { reloadServerInfos } from "app/slices/server"
@@ -18,6 +18,7 @@ import { MetricsPage } from "pages/admin/MetricsPage"
import { AboutPage } from "pages/app/AboutPage"
import { AddPage } from "pages/app/AddPage"
import { CategoryDetailsPage } from "pages/app/CategoryDetailsPage"
import { DonatePage } from "pages/app/DonatePage"
import { FeedDetailsPage } from "pages/app/FeedDetailsPage"
import { FeedEntriesPage } from "pages/app/FeedEntriesPage"
import Layout from "pages/app/Layout"
@@ -26,17 +27,16 @@ import { TagDetailsPage } from "pages/app/TagDetailsPage"
import { LoginPage } from "pages/auth/LoginPage"
import { PasswordRecoveryPage } from "pages/auth/PasswordRecoveryPage"
import { RegistrationPage } from "pages/auth/RegistrationPage"
import { WelcomePage } from "pages/WelcomePage"
import React, { useEffect } from "react"
import { HashRouter, Navigate, Route, Routes, useNavigate } from "react-router-dom"
import ReactGA from "react-ga4"
import { HashRouter, Navigate, Route, Routes, useLocation, useNavigate } from "react-router-dom"
import Tinycon from "tinycon"
import useLocalStorage from "use-local-storage"
function Providers(props: { children: React.ReactNode }) {
const preferredColorScheme = useColorScheme()
const [colorScheme, setColorScheme] = useLocalStorage<ColorScheme>({
key: "color-scheme",
defaultValue: preferredColorScheme,
getInitialValueInEffect: true,
})
const [colorScheme, setColorScheme] = useLocalStorage<ColorScheme>("color-scheme", preferredColorScheme)
const toggleColorScheme = (value?: ColorScheme) => setColorScheme(value || (colorScheme === "dark" ? "light" : "dark"))
return (
@@ -52,9 +52,8 @@ function Providers(props: { children: React.ReactNode }) {
}}
>
<ModalsProvider>
<NotificationsProvider position="top-center" zIndex={9999}>
<ErrorBoundary>{props.children}</ErrorBoundary>
</NotificationsProvider>
<Notifications position="bottom-right" zIndex={9999} />
<ErrorBoundary>{props.children}</ErrorBoundary>
</ModalsProvider>
</MantineProvider>
</ColorSchemeProvider>
@@ -69,9 +68,11 @@ function AppRoutes() {
return (
<Routes>
<Route path="/" element={<Navigate to={`/app/category/${Constants.categories.all.id}`} replace />} />
<Route path="welcome" element={<WelcomePage />} />
<Route path="login" element={<LoginPage />} />
<Route path="register" element={<RegistrationPage />} />
<Route path="passwordRecovery" element={<PasswordRecoveryPage />} />
<Route path="api" element={<ApiDocumentationPage />} />
<Route path="app" element={<Layout header={<Header />} sidebar={<Tree />} />}>
<Route path="category">
<Route path=":id" element={<FeedEntriesPage sourceType="category" />} />
@@ -92,7 +93,7 @@ function AppRoutes() {
<Route path="metrics" element={<MetricsPage />} />
</Route>
<Route path="about" element={<AboutPage />} />
<Route path="api" element={<ApiDocumentationPage />} />
<Route path="donate" element={<DonatePage />} />
</Route>
<Route path="*" element={<Navigate to="/" replace />} />
</Routes>
@@ -114,6 +115,21 @@ function RedirectHandler() {
return null
}
function GoogleAnalyticsHandler() {
const location = useLocation()
const googleAnalyticsCode = useAppSelector(state => state.server.serverInfos?.googleAnalyticsCode)
useEffect(() => {
if (googleAnalyticsCode) ReactGA.initialize(googleAnalyticsCode)
}, [googleAnalyticsCode])
useEffect(() => {
if (ReactGA.isInitialized) ReactGA.send({ hitType: "pageview", page: location.pathname })
}, [location])
return null
}
function FaviconHandler() {
const root = useAppSelector(state => state.tree.rootCategory)
useEffect(() => {
@@ -138,6 +154,7 @@ export function App() {
<>
<FaviconHandler />
<HashRouter>
<GoogleAnalyticsHandler />
<RedirectHandler />
<AppRoutes />
</HashRouter>

View File

@@ -30,7 +30,12 @@ const axiosInstance = axios.create({ baseURL: "./rest", withCredentials: true })
axiosInstance.interceptors.response.use(
response => response,
error => {
if (error.response.status === 401) window.location.hash = "/login"
if (
(error.response.status === 401 && error.response.data === "Credentials are required to access this resource.") ||
(error.response.status === 403 && error.response.data === "You don't have the required role to access this resource.")
) {
window.location.hash = "/welcome"
}
throw error
}
)
@@ -58,6 +63,7 @@ export const client = {
getEntries: (req: GetEntriesPaginatedRequest) => axiosInstance.get<Entries>("feed/entries", { params: req }),
markEntries: (req: MarkRequest) => axiosInstance.post("feed/mark", req),
fetchFeed: (req: FeedInfoRequest) => axiosInstance.post<FeedInfo>("feed/fetch", req),
refreshAll: () => axiosInstance.get("feed/refreshAll"),
subscribe: (req: SubscribeRequest) => axiosInstance.post<number>("feed/subscribe", req),
unsubscribe: (req: IDRequest) => axiosInstance.post("feed/unsubscribe", req),
importOpml: (req: File) => {

View File

@@ -54,13 +54,13 @@ const sharing: {
label: "Twitter",
icon: SiTwitter,
color: "#1D9BF0",
url: (url, desc) => `http://twitter.com/share?text=${desc}&url=${url}`,
url: (url, desc) => `https://twitter.com/share?text=${desc}&url=${url}`,
},
tumblr: {
label: "Tumblr",
icon: SiTumblr,
color: "#375672",
url: (url, desc) => `http://www.tumblr.com/share/link?url=${url}&name=${desc}`,
url: (url, desc) => `https://www.tumblr.com/share/link?url=${url}&name=${desc}`,
},
pocket: {
label: "Pocket",
@@ -97,4 +97,5 @@ export const Constants = {
mainScrollAreaId: "main-scroll-area-id",
entryId: (entry: Entry) => `entry-id-${entry.id}`,
},
bitcoinWalletAddress: "1dymfUxqCWpyD7a6rQSqNy4rLVDBsAr5e",
}

View File

@@ -1,19 +1,20 @@
/* eslint-disable import/first */
import { beforeEach, describe, expect, it, vi } from "vitest"
import { DeepMockProxy, mockDeep, mockReset } from "vitest-mock-extended"
vi.doMock("app/client", () => ({ client: mockDeep() }))
import { configureStore } from "@reduxjs/toolkit"
import { client } from "app/client"
import { reducers } from "app/store"
import { Entries, Entry } from "app/types"
import { AxiosResponse } from "axios"
import { beforeEach, describe, expect, it, vi } from "vitest"
import { mockReset } from "vitest-mock-extended"
import { loadEntries, loadMoreEntries, markAllEntries, markEntry } from "./entries"
describe("entries", () => {
const mockClient = client as DeepMockProxy<typeof client>
const mockClient = await vi.hoisted(async () => {
const mockModule = await import("vitest-mock-extended")
return mockModule.mockDeep<typeof client>()
})
vi.mock("app/client", () => ({ client: mockClient }))
describe("entries", () => {
beforeEach(() => {
mockReset(mockClient)
})

View File

@@ -128,6 +128,7 @@ export const markAllEntries = createAsyncThunk<void, { sourceType: EntrySourceTy
async (arg, thunkApi) => {
const endpoint = arg.sourceType === "category" ? client.category.markEntries : client.feed.markEntries
await endpoint(arg.req)
thunkApi.dispatch(reloadEntries())
thunkApi.dispatch(reloadTree())
}
)

View File

@@ -13,7 +13,15 @@ export const redirectToRegistration = createAsyncThunk("redirect/register", (_,
export const redirectToPasswordRecovery = createAsyncThunk("redirect/passwordRecovery", (_, thunkApi) =>
thunkApi.dispatch(redirectTo("/passwordRecovery"))
)
export const redirectToSelectedSource = createAsyncThunk<void, void, { state: RootState }>("redirect/selectedSource", (_, thunkApi) => {
export const redirectToApiDocumentation = createAsyncThunk("redirect/api", (_, thunkApi) => thunkApi.dispatch(redirectTo("/api")))
export const redirectToSelectedSource = createAsyncThunk<
void,
void,
{
state: RootState
}
>("redirect/selectedSource", (_, thunkApi) => {
const { source } = thunkApi.getState().entries
thunkApi.dispatch(redirectTo(`/app/${source.type}/${source.id}`))
})
@@ -44,8 +52,8 @@ export const redirectToAdminUsers = createAsyncThunk("redirect/admin/users", (_,
export const redirectToMetrics = createAsyncThunk("redirect/admin/metrics", (_, thunkApi) =>
thunkApi.dispatch(redirectTo("/app/admin/metrics"))
)
export const redirectToDonate = createAsyncThunk("redirect/donate", (_, thunkApi) => thunkApi.dispatch(redirectTo("/app/donate")))
export const redirectToAbout = createAsyncThunk("redirect/about", (_, thunkApi) => thunkApi.dispatch(redirectTo("/app/about")))
export const redirectToApiDocumentation = createAsyncThunk("redirect/api", (_, thunkApi) => thunkApi.dispatch(redirectTo("/app/api")))
export const redirectSlice = createSlice({
name: "redirect",

View File

@@ -3,7 +3,7 @@ import { showNotification } from "@mantine/notifications"
import { createAsyncThunk, createSlice, isAnyOf } from "@reduxjs/toolkit"
import { client } from "app/client"
import { RootState } from "app/store"
import { ReadingMode, ReadingOrder, Settings, SharingSettings, UserModel, ViewMode } from "app/types"
import { ReadingMode, ReadingOrder, Settings, SharingSettings, UserModel } from "app/types"
// eslint-disable-next-line import/no-cycle
import { reloadEntries } from "./entries"
@@ -36,46 +36,67 @@ export const changeReadingOrder = createAsyncThunk<void, ReadingOrder, { state:
thunkApi.dispatch(reloadEntries())
}
)
export const changeViewMode = createAsyncThunk<void, ViewMode, { state: RootState }>("settings/viewMode", (viewMode, thunkApi) => {
const { settings } = thunkApi.getState().user
if (!settings) return
client.user.saveSettings({ ...settings, viewMode })
thunkApi.dispatch(reloadEntries())
})
export const changeLanguage = createAsyncThunk<void, string, { state: RootState }>("settings/language", (language, thunkApi) => {
export const changeLanguage = createAsyncThunk<
void,
string,
{
state: RootState
}
>("settings/language", (language, thunkApi) => {
const { settings } = thunkApi.getState().user
if (!settings) return
client.user.saveSettings({ ...settings, language })
})
export const changeScrollSpeed = createAsyncThunk<void, boolean, { state: RootState }>("settings/scrollSpeed", (speed, thunkApi) => {
export const changeScrollSpeed = createAsyncThunk<
void,
boolean,
{
state: RootState
}
>("settings/scrollSpeed", (speed, thunkApi) => {
const { settings } = thunkApi.getState().user
if (!settings) return
client.user.saveSettings({ ...settings, scrollSpeed: speed ? 400 : 0 })
})
export const changeShowRead = createAsyncThunk<void, boolean, { state: RootState }>("settings/showRead", (showRead, thunkApi) => {
export const changeShowRead = createAsyncThunk<
void,
boolean,
{
state: RootState
}
>("settings/showRead", (showRead, thunkApi) => {
const { settings } = thunkApi.getState().user
if (!settings) return
client.user.saveSettings({ ...settings, showRead })
})
export const changeScrollMarks = createAsyncThunk<void, boolean, { state: RootState }>("settings/scrollMarks", (scrollMarks, thunkApi) => {
export const changeScrollMarks = createAsyncThunk<
void,
boolean,
{
state: RootState
}
>("settings/scrollMarks", (scrollMarks, thunkApi) => {
const { settings } = thunkApi.getState().user
if (!settings) return
client.user.saveSettings({ ...settings, scrollMarks })
})
export const changeSharingSetting = createAsyncThunk<void, { site: keyof SharingSettings; value: boolean }, { state: RootState }>(
"settings/sharingSetting",
(sharingSetting, thunkApi) => {
const { settings } = thunkApi.getState().user
if (!settings) return
client.user.saveSettings({
...settings,
sharingSettings: {
...settings.sharingSettings,
[sharingSetting.site]: sharingSetting.value,
},
})
export const changeSharingSetting = createAsyncThunk<
void,
{ site: keyof SharingSettings; value: boolean },
{
state: RootState
}
)
>("settings/sharingSetting", (sharingSetting, thunkApi) => {
const { settings } = thunkApi.getState().user
if (!settings) return
client.user.saveSettings({
...settings,
sharingSettings: {
...settings.sharingSettings,
[sharingSetting.site]: sharingSetting.value,
},
})
})
export const userSlice = createSlice({
name: "user",
@@ -99,10 +120,6 @@ export const userSlice = createSlice({
if (!state.settings) return
state.settings.readingOrder = action.meta.arg
})
builder.addCase(changeViewMode.pending, (state, action) => {
if (!state.settings) return
state.settings.viewMode = action.meta.arg
})
builder.addCase(changeLanguage.pending, (state, action) => {
if (!state.settings) return
state.settings.language = action.meta.arg

View File

@@ -38,6 +38,7 @@ export interface ApplicationSettings {
export interface Category {
id: string
parentId?: string
parentName?: string
name: string
children: Category[]
feeds: Subscription[]
@@ -227,11 +228,10 @@ export interface Settings {
language: string
readingMode: ReadingMode
readingOrder: ReadingOrder
viewMode: ViewMode
showRead: boolean
scrollMarks: boolean
theme?: string
customCss?: string
customJs?: string
scrollSpeed: number
sharingSettings: SharingSettings
}
@@ -305,4 +305,4 @@ export type ReadingMode = "all" | "unread"
export type ReadingOrder = "asc" | "desc"
export type ViewMode = "title" | "cozy" | "expanded"
export type ViewMode = "title" | "cozy" | "detailed" | "expanded"

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

View File

@@ -1,12 +1,17 @@
import { ActionIcon, Button, useMantineTheme } from "@mantine/core"
import { ActionIcon, Button, Tooltip, useMantineTheme } from "@mantine/core"
import { ActionIconProps } from "@mantine/core/lib/ActionIcon/ActionIcon"
import { ButtonProps } from "@mantine/core/lib/Button/Button"
import { useMediaQuery } from "@mantine/hooks"
import { forwardRef } from "react"
import { forwardRef, MouseEventHandler, ReactNode } from "react"
interface ActionButtonProps {
className?: string
icon?: React.ReactNode
label?: string
onClick?: React.MouseEventHandler
icon?: ReactNode
label: ReactNode
onClick?: MouseEventHandler
variant?: ActionIconProps["variant"] & ButtonProps["variant"]
hideLabelOnDesktop?: boolean
showLabelOnMobile?: boolean
}
/**
@@ -14,13 +19,17 @@ interface ActionButtonProps {
*/
export const ActionButton = forwardRef<HTMLButtonElement, ActionButtonProps>((props: ActionButtonProps, ref) => {
const theme = useMantineTheme()
const mobile = !useMediaQuery(`(min-width: ${theme.breakpoints.lg}px)`)
return mobile ? (
<ActionIcon ref={ref} color={theme.primaryColor} variant="subtle" className={props.className} onClick={props.onClick}>
{props.icon}
</ActionIcon>
const variant = props.variant ?? "subtle"
const mobile = !useMediaQuery(`(min-width: ${theme.breakpoints.lg})`)
const iconOnly = (mobile && !props.showLabelOnMobile) || (!mobile && props.hideLabelOnDesktop)
return iconOnly ? (
<Tooltip label={props.label} openDelay={500}>
<ActionIcon ref={ref} color={theme.primaryColor} variant={variant} className={props.className} onClick={props.onClick}>
{props.icon}
</ActionIcon>
</Tooltip>
) : (
<Button ref={ref} variant="subtle" size="xs" className={props.className} leftIcon={props.icon} onClick={props.onClick}>
<Button ref={ref} variant={variant} size="xs" className={props.className} leftIcon={props.icon} onClick={props.onClick}>
{props.label}
</Button>
)

View File

@@ -1,5 +1,5 @@
import { t } from "@lingui/macro"
import { Alert as MantineAlert, Box } from "@mantine/core"
import { Trans } from "@lingui/macro"
import { Box, Alert as MantineAlert } from "@mantine/core"
import { Fragment } from "react"
import { TbAlertCircle, TbAlertTriangle, TbCircleCheck } from "react-icons/tb"
@@ -10,24 +10,24 @@ export interface ErrorsAlertProps {
}
export function Alert(props: ErrorsAlertProps) {
let title: string
let title: React.ReactNode
let color: string
let icon: React.ReactNode
const level = props.level ?? "error"
switch (level) {
case "error":
title = t`Error`
title = <Trans>Error</Trans>
color = "red"
icon = <TbAlertCircle />
break
case "warning":
title = t`Warning`
title = <Trans>Warning</Trans>
color = "orange"
icon = <TbAlertTriangle />
break
case "success":
title = t`Success`
title = <Trans>Success</Trans>
color = "green"
icon = <TbCircleCheck />
break

View File

@@ -3,13 +3,16 @@ import { useState } from "react"
import { TbPhoto } from "react-icons/tb"
interface ImageWithPlaceholderWhileLoadingProps {
src?: string
alt?: string
src: string
alt: string
title?: string
width?: number
height?: number | "auto"
placeholderWidth?: number
placeholderHeight?: number
placeholderBackgroundColor?: string
placeholderIconSize?: number
placeholderIconColor?: string
}
const useStyles = createStyles((theme, props: ImageWithPlaceholderWhileLoadingProps) => ({
@@ -17,8 +20,8 @@ const useStyles = createStyles((theme, props: ImageWithPlaceholderWhileLoadingPr
width: props.placeholderWidth ?? 400,
height: props.placeholderHeight ?? 600,
maxWidth: "100%",
color: theme.fn.variant({ color: theme.primaryColor, variant: "subtle" }).color,
backgroundColor: theme.colorScheme === "dark" ? theme.colors.dark[5] : theme.colors.gray[1],
color: props.placeholderIconColor ?? theme.fn.variant({ color: theme.primaryColor, variant: "subtle" }).color,
backgroundColor: props.placeholderBackgroundColor ?? (theme.colorScheme === "dark" ? theme.colors.dark[5] : theme.colors.gray[1]),
},
}))
@@ -32,7 +35,7 @@ export function ImageWithPlaceholderWhileLoading(props: ImageWithPlaceholderWhil
<Box>
<Center className={classes.placeholder}>
<div>
<TbPhoto size={48} />
<TbPhoto size={props.placeholderIconSize ?? 48} />
</div>
</Center>
</Box>

View File

@@ -95,6 +95,10 @@ export function KeyboardShortcutsHelp() {
</td>
<td>
<Kbd>B</Kbd>
<span>, </span>
<Kbd>
<Trans>Middle click</Trans>
</Kbd>
</td>
</tr>
<tr>
@@ -103,6 +107,8 @@ export function KeyboardShortcutsHelp() {
</td>
<td>
<Kbd>M</Kbd>
<span>, </span>
<Trans>Swipe header to the right</Trans>
</td>
</tr>
<tr>
@@ -143,6 +149,26 @@ export function KeyboardShortcutsHelp() {
<Kbd>U</Kbd>
</td>
</tr>
<tr>
<td>
<Trans>Show entry menu (desktop)</Trans>
</td>
<td>
<Kbd>
<Trans>Right click</Trans>
</Kbd>
</td>
</tr>
<tr>
<td>
<Trans>Show entry menu (mobile)</Trans>
</td>
<td>
<Kbd>
<Trans>Long press</Trans>
</Kbd>
</td>
</tr>
<tr>
<td>
<Trans>Show keyboard shortcut help</Trans>

View File

@@ -1,4 +1,4 @@
import { t, Trans } from "@lingui/macro"
import { Trans } from "@lingui/macro"
import { Box, Button, Checkbox, Group, PasswordInput, Stack, TextInput } from "@mantine/core"
import { useForm } from "@mantine/form"
import { client, errorToStrings } from "app/client"
@@ -29,11 +29,11 @@ export function UserEdit(props: UserEditProps) {
<form onSubmit={form.onSubmit(saveUser.execute)}>
<Stack>
<TextInput label={t`Name`} {...form.getInputProps("name")} required />
<PasswordInput label={t`Password`} {...form.getInputProps("password")} required={!props.user} />
<TextInput type="email" label={t`E-mail`} {...form.getInputProps("email")} />
<Checkbox label={t`Admin`} {...form.getInputProps("admin", { type: "checkbox" })} />
<Checkbox label={t`Enabled`} {...form.getInputProps("enabled", { type: "checkbox" })} />
<TextInput label={<Trans>Name</Trans>} {...form.getInputProps("name")} required />
<PasswordInput label={<Trans>Password</Trans>} {...form.getInputProps("password")} required={!props.user} />
<TextInput type="email" label={<Trans>E-mail</Trans>} {...form.getInputProps("email")} />
<Checkbox label={<Trans>Admin</Trans>} {...form.getInputProps("admin", { type: "checkbox" })} />
<Checkbox label={<Trans>Enabled</Trans>} {...form.getInputProps("enabled", { type: "checkbox" })} />
<Group>
<Button variant="default" onClick={props.onCancel}>

View File

@@ -29,7 +29,9 @@ const transform: TransformCallback = node => {
if (node.tagName === "IMG") {
// show placeholders for loading img tags, this allows the entry to have its final height immediately
const src = node.getAttribute("src") ?? undefined
const alt = node.getAttribute("alt") ?? undefined
if (!src) return undefined
const alt = node.getAttribute("alt") ?? "image"
const title = node.getAttribute("title") ?? undefined
const nodeWidth = node.getAttribute("width")
const nodeHeight = node.getAttribute("height")
@@ -40,6 +42,7 @@ const transform: TransformCallback = node => {
height,
maxWidth: Constants.layout.entryMaxWidth,
})
return (
<ImageWithPlaceholderWhileLoading
src={src}

View File

@@ -1,7 +1,7 @@
import { TypographyStylesProvider } from "@mantine/core"
import { ImageWithPlaceholderWhileLoading } from "components/ImageWithPlaceholderWhileLoading"
export function Enclosure(props: { enclosureType?: string; enclosureUrl?: string }) {
export function Enclosure(props: { enclosureType: string; enclosureUrl: string }) {
const hasVideo = props.enclosureType && props.enclosureType.indexOf("video") === 0
const hasAudio = props.enclosureType && props.enclosureType.indexOf("audio") === 0
const hasImage = props.enclosureType && props.enclosureType.indexOf("image") === 0

View File

@@ -1,4 +1,4 @@
import { t } from "@lingui/macro"
import { Trans } from "@lingui/macro"
import { openModal } from "@mantine/modals"
import { Constants } from "app/constants"
import {
@@ -13,12 +13,14 @@ import {
} from "app/slices/entries"
import { redirectToRootCategory } from "app/slices/redirect"
import { useAppDispatch, useAppSelector } from "app/store"
import { openLinkInBackgroundTab } from "app/utils"
import { KeyboardShortcutsHelp } from "components/KeyboardShortcutsHelp"
import { Loader } from "components/Loader"
import { useMousetrap } from "hooks/useMousetrap"
import throttle from "lodash/throttle"
import { useViewMode } from "hooks/useViewMode"
import { useEffect } from "react"
import InfiniteScroll from "react-infinite-scroller"
import { throttle } from "throttle-debounce"
import { FeedEntry } from "./FeedEntry"
export function FeedEntries() {
@@ -27,7 +29,7 @@ export function FeedEntries() {
const entriesTimestamp = useAppSelector(state => state.entries.timestamp)
const selectedEntryId = useAppSelector(state => state.entries.selectedEntryId)
const hasMore = useAppSelector(state => state.entries.hasMore)
const viewMode = useAppSelector(state => state.user.settings?.viewMode)
const { viewMode } = useViewMode()
const scrollMarks = useAppSelector(state => state.user.settings?.scrollMarks)
const scrollingToEntry = useAppSelector(state => state.entries.scrollingToEntry)
const dispatch = useAppDispatch()
@@ -35,8 +37,8 @@ export function FeedEntries() {
const selectedEntry = entries.find(e => e.id === selectedEntryId)
const headerClicked = (entry: ExpendableEntry, event: React.MouseEvent) => {
if (event.button === 1 || event.ctrlKey || event.metaKey) {
// middle click
const middleClick = event.button === 1 || event.ctrlKey || event.metaKey
if (middleClick || viewMode === "expanded") {
dispatch(markEntry({ entry, read: true }))
} else if (event.button === 0) {
// main click
@@ -80,7 +82,7 @@ export function FeedEntries() {
)
}
}
const throttledListener = throttle(listener, 100)
const throttledListener = throttle(100, listener)
scrollArea?.addEventListener("scroll", throttledListener)
return () => scrollArea?.removeEventListener("scroll", throttledListener)
}, [dispatch, entries, viewMode, scrollMarks, scrollingToEntry])
@@ -211,15 +213,7 @@ export function FeedEntries() {
useMousetrap("b", () => {
// simulate ctrl+click to open tab in background
if (!selectedEntry) return
const a = document.createElement("a")
a.href = selectedEntry.url
a.rel = "noreferrer"
a.dispatchEvent(
new MouseEvent("click", {
ctrlKey: true,
metaKey: true,
})
)
openLinkInBackgroundTab(selectedEntry.url)
})
useMousetrap("m", () => {
// toggle read status
@@ -240,11 +234,18 @@ export function FeedEntries() {
)
})
useMousetrap("g a", () => dispatch(redirectToRootCategory()))
useMousetrap("?", () => openModal({ title: t`Keyboard shortcuts`, size: "xl", children: <KeyboardShortcutsHelp /> }))
useMousetrap("?", () =>
openModal({
title: <Trans>Keyboard shortcuts</Trans>,
size: "xl",
children: <KeyboardShortcutsHelp />,
})
)
if (!entries) return <Loader />
return (
<InfiniteScroll
id="entries"
initialLoad={false}
loadMore={() => dispatch(loadMoreEntries())}
hasMore={hasMore}
@@ -262,6 +263,7 @@ export function FeedEntries() {
<FeedEntry
entry={entry}
expanded={!!entry.expanded || viewMode === "expanded"}
selected={entry.id === selectedEntryId}
showSelectionIndicator={entry.id === selectedEntryId && (!entry.expanded || viewMode === "expanded")}
onHeaderClick={event => headerClicked(entry, event)}
/>

View File

@@ -1,34 +1,62 @@
import { Anchor, Box, createStyles, Divider, Paper } from "@mantine/core"
import { Box, createStyles, Divider, Paper } from "@mantine/core"
import { MantineNumberSize } from "@mantine/styles"
import { Constants } from "app/constants"
import { useAppSelector } from "app/store"
import { Entry } from "app/types"
import { markEntry } from "app/slices/entries"
import { useAppDispatch } from "app/store"
import { Entry, ViewMode } from "app/types"
import { useViewMode } from "hooks/useViewMode"
import React from "react"
import { useSwipeable } from "react-swipeable"
import { FeedEntryBody } from "./FeedEntryBody"
import { FeedEntryCompactHeader } from "./FeedEntryCompactHeader"
import { FeedEntryContextMenu, useFeedEntryContextMenu } from "./FeedEntryContextMenu"
import { FeedEntryFooter } from "./FeedEntryFooter"
import { FeedEntryHeader } from "./FeedEntryHeader"
interface FeedEntryProps {
entry: Entry
expanded: boolean
selected: boolean
showSelectionIndicator: boolean
onHeaderClick: (e: React.MouseEvent) => void
}
const useStyles = createStyles((theme, props: FeedEntryProps) => {
const useStyles = createStyles((theme, props: FeedEntryProps & { viewMode?: ViewMode }) => {
let backgroundColor
if (theme.colorScheme === "dark") backgroundColor = props.entry.read ? "inherit" : theme.colors.dark[5]
else backgroundColor = props.entry.read && !props.expanded ? theme.colors.gray[0] : "inherit"
let marginY = 10
if (props.viewMode === "title") marginY = 2
else if (props.viewMode === "cozy") marginY = 6
let mobileMarginY = 6
if (props.viewMode === "title") mobileMarginY = 2
else if (props.viewMode === "cozy") mobileMarginY = 4
let backgroundHoverColor = backgroundColor
if (!props.expanded && !props.entry.read) {
backgroundHoverColor = theme.colorScheme === "dark" ? theme.colors.dark[6] : theme.colors.gray[1]
}
const styles = {
paper: {
backgroundColor,
marginTop: theme.spacing.xs,
marginBottom: theme.spacing.xs,
marginTop: marginY,
marginBottom: marginY,
[theme.fn.smallerThan(Constants.layout.mobileBreakpoint)]: {
marginTop: "6px",
marginBottom: "6px",
marginTop: mobileMarginY,
marginBottom: mobileMarginY,
},
"@media (hover: hover)": {
"&:hover": {
backgroundColor: backgroundHoverColor,
},
},
},
headerLink: {
color: "inherit",
textDecoration: "none",
},
body: {
maxWidth: Constants.layout.entryMaxWidth,
@@ -36,41 +64,74 @@ const useStyles = createStyles((theme, props: FeedEntryProps) => {
}
if (props.showSelectionIndicator) {
styles.paper.borderLeftColor = theme.colorScheme === "dark" ? theme.colors.orange[4] : theme.colors.orange[6]
const borderLeftColor = theme.colorScheme === "dark" ? theme.colors.orange[4] : theme.colors.orange[6]
styles.paper.borderLeftColor = `${borderLeftColor} !important`
}
return styles
})
export function FeedEntry(props: FeedEntryProps) {
const { classes } = useStyles(props)
const viewMode = useAppSelector(state => state.user.settings?.viewMode)
const compactHeader = viewMode === "title" && !props.expanded
const { viewMode } = useViewMode()
const { classes, cx } = useStyles({ ...props, viewMode })
const dispatch = useAppDispatch()
const swipeHandlers = useSwipeable({
onSwipedRight: () => dispatch(markEntry({ entry: props.entry, read: !props.entry.read })),
})
const { onContextMenu } = useFeedEntryContextMenu(props.entry)
let paddingX: MantineNumberSize = "xs"
if (viewMode === "title" || viewMode === "cozy") paddingX = 6
let paddingY: MantineNumberSize = "xs"
if (viewMode === "title") paddingY = 4
else if (viewMode === "cozy") paddingY = 8
let borderRadius: MantineNumberSize = "sm"
if (viewMode === "title") borderRadius = 0
else if (viewMode === "cozy") borderRadius = "xs"
const compactHeader = !props.expanded && (viewMode === "title" || viewMode === "cozy")
return (
<Paper withBorder className={classes.paper}>
<Anchor
variant="text"
<Paper
withBorder
radius={borderRadius}
className={cx(classes.paper, {
read: props.entry.read,
unread: !props.entry.read,
expanded: props.expanded,
selected: props.selected,
"show-selection-indicator": props.showSelectionIndicator,
})}
>
<a
className={classes.headerLink}
href={props.entry.url}
target="_blank"
rel="noreferrer"
onClick={props.onHeaderClick}
onAuxClick={props.onHeaderClick}
onContextMenu={onContextMenu}
>
<Box p="xs">
<Box px={paddingX} py={paddingY} {...swipeHandlers}>
{compactHeader && <FeedEntryCompactHeader entry={props.entry} />}
{!compactHeader && <FeedEntryHeader entry={props.entry} expanded={props.expanded} />}
</Box>
</Anchor>
</a>
{props.expanded && (
<Box px="xs" pb="xs">
<Box px={paddingX} pb={paddingY}>
<Box className={classes.body} sx={{ direction: props.entry.rtl ? "rtl" : "ltr" }}>
<FeedEntryBody entry={props.entry} />
</Box>
<Divider variant="dashed" my="xs" />
<Divider variant="dashed" my={paddingY} />
<FeedEntryFooter entry={props.entry} />
</Box>
)}
<FeedEntryContextMenu entry={props.entry} />
</Paper>
)
}

View File

@@ -14,7 +14,7 @@ export function FeedEntryBody(props: FeedEntryBodyProps) {
<Box>
<Content content={props.entry.content} />
</Box>
{props.entry.enclosureUrl && (
{props.entry.enclosureType && props.entry.enclosureUrl && (
<Box pt="md">
<Enclosure enclosureType={props.entry.enclosureType} enclosureUrl={props.entry.enclosureUrl} />
</Box>

View File

@@ -1,8 +1,9 @@
import { Box, createStyles, Image, Text } from "@mantine/core"
import { Box, createStyles, Text } from "@mantine/core"
import { Entry } from "app/types"
import { RelativeDate } from "components/RelativeDate"
import { OnDesktop } from "components/responsive/OnDesktop"
import { FeedEntryTitle } from "./FeedEntryTitle"
import { FeedFavicon } from "./FeedFavicon"
export interface FeedEntryHeaderProps {
entry: Entry
@@ -37,7 +38,7 @@ export function FeedEntryCompactHeader(props: FeedEntryHeaderProps) {
return (
<Box className={classes.wrapper}>
<Box>
<Image withPlaceholder src={props.entry.iconUrl} alt="feed icon" width={18} height={18} />
<FeedFavicon url={props.entry.iconUrl} />
</Box>
<OnDesktop>
<Text color="dimmed" className={classes.feedName}>

View File

@@ -0,0 +1,128 @@
import { Trans } from "@lingui/macro"
import { createStyles, Group } from "@mantine/core"
import { Constants } from "app/constants"
import { markEntriesUpToEntry, markEntry, starEntry } from "app/slices/entries"
import { redirectToFeed } from "app/slices/redirect"
import { useAppDispatch, useAppSelector } from "app/store"
import { Entry } from "app/types"
import { openLinkInBackgroundTab, truncate } from "app/utils"
import { useEffect } from "react"
import { Item, Menu, Separator, useContextMenu } from "react-contexify"
import { TbArrowBarToDown, TbExternalLink, TbEyeCheck, TbEyeOff, TbRss, TbStar, TbStarOff } from "react-icons/tb"
import { throttle } from "throttle-debounce"
interface FeedEntryContextMenuProps {
entry: Entry
}
const iconSize = 16
const useStyles = createStyles(theme => ({
menu: {
// apply mantine theme from MenuItem.styles.ts
fontSize: theme.fontSizes.sm,
"--contexify-item-color": `${theme.colorScheme === "dark" ? theme.colors.dark[0] : theme.black} !important`,
"--contexify-activeItem-color": `${theme.colorScheme === "dark" ? theme.colors.dark[0] : theme.black} !important`,
"--contexify-activeItem-bgColor": `${
theme.colorScheme === "dark" ? theme.fn.rgba(theme.colors.dark[3], 0.35) : theme.colors.gray[1]
} !important`,
},
}))
const menuId = (entry: Entry) => entry.id
export function FeedEntryContextMenu(props: FeedEntryContextMenuProps) {
const { classes, theme } = useStyles()
const sourceType = useAppSelector(state => state.entries.source.type)
const dispatch = useAppDispatch()
return (
<Menu id={menuId(props.entry)} theme={theme.colorScheme} animation={false} className={classes.menu}>
<Item
onClick={() => {
window.open(props.entry.url, "_blank", "noreferrer")
dispatch(markEntry({ entry: props.entry, read: true }))
}}
>
<Group>
<TbExternalLink size={iconSize} />
<Trans>Open link in new tab</Trans>
</Group>
</Item>
<Item
onClick={() => {
openLinkInBackgroundTab(props.entry.url)
dispatch(markEntry({ entry: props.entry, read: true }))
}}
>
<Group>
<TbExternalLink size={iconSize} />
<Trans>Open link in new background tab</Trans>
</Group>
</Item>
<Separator />
<Item onClick={() => dispatch(starEntry({ entry: props.entry, starred: !props.entry.starred }))}>
<Group>
{props.entry.starred ? <TbStarOff size={iconSize} /> : <TbStar size={iconSize} />}
{props.entry.starred ? <Trans>Unstar</Trans> : <Trans>Star</Trans>}
</Group>
</Item>
<Item onClick={() => dispatch(markEntry({ entry: props.entry, read: !props.entry.read }))}>
<Group>
{props.entry.read ? <TbEyeOff size={iconSize} /> : <TbEyeCheck size={iconSize} />}
{props.entry.read ? <Trans>Keep unread</Trans> : <Trans>Mark as read</Trans>}
</Group>
</Item>
<Item onClick={() => dispatch(markEntriesUpToEntry(props.entry))}>
<Group>
<TbArrowBarToDown size={iconSize} />
<Trans>Mark as read up to here</Trans>
</Group>
</Item>
{sourceType === "category" && (
<>
<Separator />
<Item
onClick={() => {
dispatch(redirectToFeed(props.entry.feedId))
}}
>
<Group>
<TbRss size={iconSize} />
<Trans>Go to {truncate(props.entry.feedName, 30)}</Trans>
</Group>
</Item>
</>
)}
</Menu>
)
}
export function useFeedEntryContextMenu(entry: Entry) {
const contextMenu = useContextMenu({
id: menuId(entry),
})
const onContextMenu = (event: React.MouseEvent) => {
event.preventDefault()
contextMenu.show({
event,
})
}
// close context menu on scroll
useEffect(() => {
const scrollArea = document.getElementById(Constants.dom.mainScrollAreaId)
const listener = () => contextMenu.hideAll()
const throttledListener = throttle(100, listener)
scrollArea?.addEventListener("scroll", throttledListener)
return () => scrollArea?.removeEventListener("scroll", throttledListener)
}, [contextMenu])
return { onContextMenu }
}

View File

@@ -1,4 +1,4 @@
import { t } from "@lingui/macro"
import { t, Trans } from "@lingui/macro"
import { Group, Indicator, MultiSelect, Popover } from "@mantine/core"
import { useMediaQuery } from "@mantine/hooks"
import { Constants } from "app/constants"
@@ -9,6 +9,7 @@ import { ActionButton } from "components/ActionButtton"
import { ButtonToolbar } from "components/ButtonToolbar"
import { useEffect, useState } from "react"
import { TbArrowBarToDown, TbExternalLink, TbEyeCheck, TbEyeOff, TbShare, TbStar, TbStarOff, TbTag } from "react-icons/tb"
import { throttle } from "throttle-debounce"
import { ShareButtons } from "./ShareButtons"
interface FeedEntryFooterProps {
@@ -19,11 +20,10 @@ export function FeedEntryFooter(props: FeedEntryFooterProps) {
const [scrollPosition, setScrollPosition] = useState(0)
const sharingSettings = useAppSelector(state => state.user.settings?.sharingSettings)
const tags = useAppSelector(state => state.user.tags)
const mobile = !useMediaQuery(`(min-width: ${Constants.layout.mobileBreakpoint}px)`)
const mobile = !useMediaQuery(`(min-width: ${Constants.layout.mobileBreakpoint})`)
const dispatch = useAppDispatch()
const showSharingButtons =
sharingSettings && (Object.values(sharingSettings) as Array<typeof sharingSettings[keyof typeof sharingSettings]>).some(v => v)
const showSharingButtons = sharingSettings && Object.values(sharingSettings).some(v => v)
const readStatusButtonClicked = () => dispatch(markEntry({ entry: props.entry, read: !props.entry.read }))
const onTagsChange = (values: string[]) =>
@@ -38,8 +38,10 @@ export function FeedEntryFooter(props: FeedEntryFooterProps) {
const scrollArea = document.getElementById(Constants.dom.mainScrollAreaId)
const listener = () => setScrollPosition(scrollArea ? scrollArea.scrollTop : 0)
scrollArea?.addEventListener("scroll", listener)
return () => scrollArea?.removeEventListener("scroll", listener)
const throttledListener = throttle(100, listener)
scrollArea?.addEventListener("scroll", throttledListener)
return () => scrollArea?.removeEventListener("scroll", throttledListener)
}, [])
return (
@@ -48,20 +50,20 @@ export function FeedEntryFooter(props: FeedEntryFooterProps) {
{props.entry.markable && (
<ActionButton
icon={props.entry.read ? <TbEyeOff size={18} /> : <TbEyeCheck size={18} />}
label={props.entry.read ? t`Keep unread` : t`Mark as read`}
label={props.entry.read ? <Trans>Keep unread</Trans> : <Trans>Mark as read</Trans>}
onClick={readStatusButtonClicked}
/>
)}
<ActionButton
icon={props.entry.starred ? <TbStarOff size={18} /> : <TbStar size={18} />}
label={props.entry.starred ? t`Unstar` : t`Star`}
label={props.entry.starred ? <Trans>Unstar</Trans> : <Trans>Star</Trans>}
onClick={() => dispatch(starEntry({ entry: props.entry, starred: !props.entry.starred }))}
/>
{showSharingButtons && (
<Popover withArrow withinPortal shadow="md" positionDependencies={[scrollPosition]} closeOnClickOutside={!mobile}>
<Popover.Target>
<ActionButton icon={<TbShare size={18} />} label={t`Share`} />
<ActionButton icon={<TbShare size={18} />} label={<Trans>Share</Trans>} />
</Popover.Target>
<Popover.Dropdown>
<ShareButtons url={props.entry.url} description={props.entry.title} />
@@ -72,8 +74,8 @@ export function FeedEntryFooter(props: FeedEntryFooterProps) {
{tags && (
<Popover withArrow withinPortal shadow="md" positionDependencies={[scrollPosition]} closeOnClickOutside={!mobile}>
<Popover.Target>
<Indicator label={props.entry.tags.length} showZero={false} dot={false} inline size={16}>
<ActionButton icon={<TbTag size={18} />} label={t`Tags`} />
<Indicator label={props.entry.tags.length} disabled={props.entry.tags.length === 0} inline size={16}>
<ActionButton icon={<TbTag size={18} />} label={<Trans>Tags</Trans>} />
</Indicator>
</Popover.Target>
<Popover.Dropdown>
@@ -92,13 +94,13 @@ export function FeedEntryFooter(props: FeedEntryFooterProps) {
)}
<a href={props.entry.url} target="_blank" rel="noreferrer">
<ActionButton icon={<TbExternalLink size={18} />} label={t`Open link`} />
<ActionButton icon={<TbExternalLink size={18} />} label={<Trans>Open link</Trans>} />
</a>
</ButtonToolbar>
<ActionButton
icon={<TbArrowBarToDown size={18} />}
label={t`Mark as read up to here`}
label={<Trans>Mark as read up to here</Trans>}
onClick={() => dispatch(markEntriesUpToEntry(props.entry))}
/>
</Group>

View File

@@ -1,7 +1,8 @@
import { Box, createStyles, Image, Text } from "@mantine/core"
import { Box, createStyles, Text } from "@mantine/core"
import { Entry } from "app/types"
import { RelativeDate } from "components/RelativeDate"
import { FeedEntryTitle } from "./FeedEntryTitle"
import { FeedFavicon } from "./FeedFavicon"
export interface FeedEntryHeaderProps {
entry: Entry
@@ -33,7 +34,7 @@ export function FeedEntryHeader(props: FeedEntryHeaderProps) {
</Box>
<Box className={classes.headerSubtext}>
<Box mr={6}>
<Image withPlaceholder src={props.entry.iconUrl} alt="feed icon" width={18} height={18} />
<FeedFavicon url={props.entry.iconUrl} />
</Box>
<Box>
<Text color="dimmed">{props.entry.feedName}</Text>

View File

@@ -0,0 +1,22 @@
import { ImageWithPlaceholderWhileLoading } from "components/ImageWithPlaceholderWhileLoading"
export interface FeedFaviconProps {
url: string
size?: number
}
export function FeedFavicon({ url, size = 18 }: FeedFaviconProps) {
return (
<ImageWithPlaceholderWhileLoading
src={url}
alt="feed favicon"
width={size}
height={size}
placeholderWidth={size}
placeholderHeight={size}
placeholderBackgroundColor="inherit"
placeholderIconSize={size}
placeholderIconColor="inherit"
/>
)
}

View File

@@ -33,8 +33,8 @@ export function AddCategory() {
<form onSubmit={form.onSubmit(addCategory.execute)}>
<Stack>
<TextInput label={t`Category`} placeholder={t`Category`} {...form.getInputProps("name")} required />
<CategorySelect label={t`Parent`} {...form.getInputProps("parentId")} clearable />
<TextInput label={<Trans>Category</Trans>} placeholder={t`Category`} {...form.getInputProps("name")} required />
<CategorySelect label={<Trans>Parent</Trans>} {...form.getInputProps("parentId")} clearable />
<Group position="center">
<Button variant="default" onClick={() => dispatch(redirectToSelectedSource())}>
<Trans>Cancel</Trans>

View File

@@ -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) {

View File

@@ -36,9 +36,14 @@ export function ImportOpml() {
<form onSubmit={form.onSubmit(v => importOpml.execute(v.file))}>
<Stack>
<FileInput
label={t`OPML file`}
label={<Trans>OPML file</Trans>}
placeholder={t`OPML file`}
description={t`An opml file is an XML file containing feed URLs and categories. You can get an OPML file by exporting your data from other feed reading services.`}
description={
<Trans>
An opml file is an XML file containing feed URLs and categories. You can get an OPML file by exporting your
data from other feed reading services.
</Trans>
}
{...form.getInputProps("file")}
required
accept="application/xml"

View File

@@ -1,4 +1,4 @@
import { t, Trans } from "@lingui/macro"
import { Trans } from "@lingui/macro"
import { Box, Button, Group, Stack, Stepper, TextInput } from "@mantine/core"
import { useForm } from "@mantine/form"
import { client, errorToStrings } from "app/client"
@@ -74,24 +74,33 @@ export function Subscribe() {
<form onSubmit={nextStep}>
<Stepper active={activeStep} onStepClick={setActiveStep}>
<Stepper.Step
label={t`Analyze feed`}
description={t`Check that the feed is working`}
label={<Trans>Analyze feed</Trans>}
description={<Trans>Check that the feed is working</Trans>}
allowStepSelect={activeStep === 1}
>
<TextInput
label={t`Feed URL`}
label={<Trans>Feed URL</Trans>}
placeholder="http://www.mysite.com/rss"
description={t`The URL for the feed you want to subscribe to. You can also use the website's url directly and CommaFeed will try to find the feed in the page.`}
description={
<Trans>
The URL for the feed you want to subscribe to. You can also use the website's url directly and CommaFeed
will try to find the feed in the page.
</Trans>
}
required
autoFocus
{...step0Form.getInputProps("url")}
/>
</Stepper.Step>
<Stepper.Step label={t`Subscribe`} description={t`Subscribe to the feed`} allowStepSelect={false}>
<Stepper.Step
label={<Trans>Subscribe</Trans>}
description={<Trans>Subscribe to the feed</Trans>}
allowStepSelect={false}
>
<Stack>
<TextInput label={t`Feed URL`} {...step1Form.getInputProps("url")} disabled />
<TextInput label={t`Feed name`} {...step1Form.getInputProps("title")} required autoFocus />
<CategorySelect label={t`Category`} {...step1Form.getInputProps("categoryId")} clearable />
<TextInput label={<Trans>Feed URL</Trans>} {...step1Form.getInputProps("url")} disabled />
<TextInput label={<Trans>Feed name</Trans>} {...step1Form.getInputProps("title")} required autoFocus />
<CategorySelect label={<Trans>Category</Trans>} {...step1Form.getInputProps("categoryId")} clearable />
</Stack>
</Stepper.Step>
</Stepper>

View File

@@ -1,4 +1,4 @@
import { t } from "@lingui/macro"
import { t, Trans } from "@lingui/macro"
import { ActionIcon, Center, Divider, Indicator, Popover, TextInput } from "@mantine/core"
import { useForm } from "@mantine/form"
import { reloadEntries, search } from "app/slices/entries"
@@ -7,8 +7,9 @@ import { useAppDispatch, useAppSelector } from "app/store"
import { ActionButton } from "components/ActionButtton"
import { ButtonToolbar } from "components/ButtonToolbar"
import { Loader } from "components/Loader"
import { useBrowserExtension } from "hooks/useBrowserExtension"
import { useEffect } from "react"
import { TbArrowDown, TbArrowUp, TbEye, TbEyeOff, TbRefresh, TbSearch, TbUser, TbX } from "react-icons/tb"
import { TbArrowDown, TbArrowUp, TbExternalLink, TbEye, TbEyeOff, TbRefresh, TbSearch, TbSettings, TbUser, TbX } from "react-icons/tb"
import { MarkAllAsReadButton } from "./MarkAllAsReadButton"
import { ProfileMenu } from "./ProfileMenu"
@@ -17,10 +18,12 @@ function HeaderDivider() {
}
const iconSize = 18
export function Header() {
const settings = useAppSelector(state => state.user.settings)
const profile = useAppSelector(state => state.user.profile)
const searchFromStore = useAppSelector(state => state.entries.search)
const { isBrowserExtension, openSettingsPage, openAppInNewTab } = useBrowserExtension()
const dispatch = useAppDispatch()
const searchForm = useForm<{ search: string }>({
@@ -40,26 +43,30 @@ export function Header() {
return (
<Center>
<ButtonToolbar>
<ActionButton icon={<TbRefresh size={iconSize} />} label={t`Refresh`} onClick={() => dispatch(reloadEntries())} />
<ActionButton
icon={<TbRefresh size={iconSize} />}
label={<Trans>Refresh</Trans>}
onClick={() => dispatch(reloadEntries())}
/>
<MarkAllAsReadButton iconSize={iconSize} />
<HeaderDivider />
<ActionButton
icon={settings.readingMode === "all" ? <TbEye size={iconSize} /> : <TbEyeOff size={iconSize} />}
label={settings.readingMode === "all" ? t`All` : t`Unread`}
label={settings.readingMode === "all" ? <Trans>All</Trans> : <Trans>Unread</Trans>}
onClick={() => dispatch(changeReadingMode(settings.readingMode === "all" ? "unread" : "all"))}
/>
<ActionButton
icon={settings.readingOrder === "asc" ? <TbArrowUp size={iconSize} /> : <TbArrowDown size={iconSize} />}
label={settings.readingOrder === "asc" ? t`Asc` : t`Desc`}
label={settings.readingOrder === "asc" ? <Trans>Asc</Trans> : <Trans>Desc</Trans>}
onClick={() => dispatch(changeReadingOrder(settings.readingOrder === "asc" ? "desc" : "asc"))}
/>
<Popover>
<Popover.Target>
<Indicator disabled={!searchFromStore}>
<ActionButton icon={<TbSearch size={iconSize} />} label={t`Search`} />
<ActionButton icon={<TbSearch size={iconSize} />} label={<Trans>Search</Trans>} />
</Indicator>
</Popover.Target>
<Popover.Dropdown>
@@ -82,6 +89,23 @@ export function Header() {
<HeaderDivider />
<ProfileMenu control={<ActionButton icon={<TbUser size={iconSize} />} label={profile?.name} />} />
{isBrowserExtension && (
<>
<HeaderDivider />
<ActionButton
icon={<TbSettings size={iconSize} />}
label={<Trans>Extension options</Trans>}
onClick={() => openSettingsPage()}
/>
<ActionButton
icon={<TbExternalLink size={iconSize} />}
label={<Trans>Open CommaFeed</Trans>}
onClick={() => openAppInNewTab()}
/>
</>
)}
</ButtonToolbar>
</Center>
)

View File

@@ -1,4 +1,4 @@
import { t, Trans } from "@lingui/macro"
import { Trans } from "@lingui/macro"
import { Button, Code, Group, Modal, Slider, Stack, Text } from "@mantine/core"
import { markAllEntries } from "app/slices/entries"
@@ -17,7 +17,7 @@ export function MarkAllAsReadButton(props: { iconSize: number }) {
return (
<>
<Modal opened={opened} onClose={() => setOpened(false)} title={t`Mark all entries as read`}>
<Modal opened={opened} onClose={() => setOpened(false)} title={<Trans>Mark all entries as read</Trans>}>
<Stack>
<Text size="sm">
{threshold === 0 && (
@@ -72,7 +72,7 @@ export function MarkAllAsReadButton(props: { iconSize: number }) {
</Modal>
<ActionButton
icon={<TbChecks size={props.iconSize} />}
label={t`Mark all as read`}
label={<Trans>Mark all as read</Trans>}
onClick={() => {
setThreshold(0)
setOpened(true)

View File

@@ -1,11 +1,27 @@
import { Trans } from "@lingui/macro"
import { Box, Divider, Group, Menu, SegmentedControl, SegmentedControlItem, useMantineColorScheme } from "@mantine/core"
import { redirectToAbout, redirectToAdminUsers, redirectToMetrics, redirectToSettings } from "app/slices/redirect"
import { changeViewMode } from "app/slices/user"
import { showNotification } from "@mantine/notifications"
import { client } from "app/client"
import { redirectToAbout, redirectToAdminUsers, redirectToDonate, redirectToMetrics, redirectToSettings } from "app/slices/redirect"
import { useAppDispatch, useAppSelector } from "app/store"
import { ViewMode } from "app/types"
import { useViewMode } from "hooks/useViewMode"
import { useState } from "react"
import { TbChartLine, TbHelp, TbLayoutList, TbList, TbMoon, TbNotes, TbPower, TbSettings, TbSun, TbUsers } from "react-icons/tb"
import {
TbChartLine,
TbHeartFilled,
TbHelp,
TbLayoutList,
TbList,
TbListDetails,
TbMoon,
TbNotes,
TbPower,
TbSettings,
TbSun,
TbUsers,
TbWorldDownload,
} from "react-icons/tb"
interface ProfileMenuProps {
control: React.ReactElement
@@ -40,6 +56,17 @@ const viewModeData: ViewModeControlItem[] = [
</Group>
),
},
{
value: "detailed",
label: (
<Group>
<TbListDetails size={iconSize} />
<Box ml={6}>
<Trans>Detailed</Trans>
</Box>
</Group>
),
},
{
value: "expanded",
label: (
@@ -55,7 +82,8 @@ const viewModeData: ViewModeControlItem[] = [
export function ProfileMenu(props: ProfileMenuProps) {
const [opened, setOpened] = useState(false)
const viewMode = useAppSelector(state => state.user.settings?.viewMode)
const { viewMode, setViewMode } = useViewMode()
const profile = useAppSelector(state => state.user.profile)
const admin = useAppSelector(state => state.user.profile?.admin)
const dispatch = useAppDispatch()
const { colorScheme, toggleColorScheme } = useMantineColorScheme()
@@ -69,6 +97,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,8 +107,24 @@ export function ProfileMenu(props: ProfileMenuProps) {
>
<Trans>Settings</Trans>
</Menu.Item>
<Menu.Item
icon={<TbWorldDownload size={iconSize} />}
onClick={() =>
client.feed.refreshAll().then(() => {
showNotification({
message: <Trans>Your feeds have been queued for refresh.</Trans>,
color: "green",
autoClose: 1000,
})
setOpened(false)
})
}
>
<Trans>Fetch all my feeds now</Trans>
</Menu.Item>
<Divider />
<Menu.Label>
<Trans>Theme</Trans>
</Menu.Label>
@@ -88,6 +133,7 @@ export function ProfileMenu(props: ProfileMenuProps) {
</Menu.Item>
<Divider />
<Menu.Label>
<Trans>Display</Trans>
</Menu.Label>
@@ -96,7 +142,7 @@ export function ProfileMenu(props: ProfileMenuProps) {
orientation="vertical"
data={viewModeData}
value={viewMode}
onChange={e => dispatch(changeViewMode(e as ViewMode))}
onChange={e => setViewMode(e as ViewMode)}
mb="xs"
/>
@@ -128,6 +174,17 @@ export function ProfileMenu(props: ProfileMenuProps) {
)}
<Divider />
<Menu.Item
icon={<TbHeartFilled size={iconSize} color="red" />}
onClick={() => {
dispatch(redirectToDonate())
setOpened(false)
}}
>
<Trans>Donate</Trans>
</Menu.Item>
<Menu.Item
icon={<TbHelp size={iconSize} />}
onClick={() => {

View File

@@ -0,0 +1,96 @@
import { Trans } from "@lingui/macro"
import { Box, Button, Group, Stack, Textarea } from "@mantine/core"
import { useForm } from "@mantine/form"
import { client, errorToStrings } from "app/client"
import { redirectToSelectedSource } from "app/slices/redirect"
import { useAppDispatch, useAppSelector } from "app/store"
import { Alert } from "components/Alert"
import { useEffect } from "react"
import { useAsyncCallback } from "react-async-hook"
import { TbDeviceFloppy } from "react-icons/tb"
interface FormData {
customCss: string
customJs: string
}
export function CustomCodeSettings() {
const settings = useAppSelector(state => state.user.settings)
const dispatch = useAppDispatch()
const form = useForm<FormData>()
const { setValues } = form
const saveCustomCode = useAsyncCallback(
async (d: FormData) => {
if (!settings) return
await client.user.saveSettings({
...settings,
customCss: d.customCss,
customJs: d.customJs,
})
},
{
onSuccess: () => {
window.location.reload()
},
}
)
useEffect(() => {
if (!settings) return
setValues({
customCss: settings.customCss,
customJs: settings.customJs,
})
}, [setValues, settings])
return (
<>
{saveCustomCode.error && (
<Box mb="md">
<Alert messages={errorToStrings(saveCustomCode.error)} />
</Box>
)}
<form onSubmit={form.onSubmit(saveCustomCode.execute)}>
<Stack>
<Textarea
autosize
minRows={4}
maxRows={15}
{...form.getInputProps("customCss")}
description={<Trans>Custom CSS rules that will be applied</Trans>}
styles={{
input: {
fontFamily: "monospace",
},
}}
/>
<Textarea
autosize
minRows={4}
maxRows={15}
{...form.getInputProps("customJs")}
description={<Trans>Custom JS code that will be executed on page load</Trans>}
styles={{
input: {
fontFamily: "monospace",
},
}}
/>
<Group>
<Button variant="default" onClick={() => dispatch(redirectToSelectedSource())}>
<Trans>Cancel</Trans>
</Button>
<Button type="submit" leftIcon={<TbDeviceFloppy size={16} />} loading={saveCustomCode.loading}>
<Trans>Save</Trans>
</Button>
</Group>
</Stack>
</form>
</>
)
}

View File

@@ -1,4 +1,4 @@
import { t } from "@lingui/macro"
import { Trans } from "@lingui/macro"
import { Divider, Select, SimpleGrid, Stack, Switch } from "@mantine/core"
import { Constants } from "app/constants"
import { changeLanguage, changeScrollMarks, changeScrollSpeed, changeSharingSetting, changeShowRead } from "app/slices/user"
@@ -17,7 +17,7 @@ export function DisplaySettings() {
return (
<Stack>
<Select
description={t`Language`}
description={<Trans>Language</Trans>}
value={language}
data={locales.map(l => ({
value: l.key,
@@ -27,24 +27,24 @@ export function DisplaySettings() {
/>
<Switch
label={t`Scroll smoothly when navigating between entries`}
label={<Trans>Scroll smoothly when navigating between entries</Trans>}
checked={scrollSpeed ? scrollSpeed > 0 : false}
onChange={e => dispatch(changeScrollSpeed(e.currentTarget.checked))}
/>
<Switch
label={t`Show feeds and categories with no unread entries`}
label={<Trans>Show feeds and categories with no unread entries</Trans>}
checked={showRead}
onChange={e => dispatch(changeShowRead(e.currentTarget.checked))}
/>
<Switch
label={t`In expanded view, scrolling through entries mark them as read`}
label={<Trans>In expanded view, scrolling through entries mark them as read</Trans>}
checked={scrollMarks}
onChange={e => dispatch(changeScrollMarks(e.currentTarget.checked))}
/>
<Divider label={t`Sharing sites`} labelPosition="center" />
<Divider label={<Trans>Sharing sites</Trans>} labelPosition="center" />
<SimpleGrid cols={2}>
{(Object.keys(Constants.sharing) as Array<keyof SharingSettings>).map(site => (

View File

@@ -22,7 +22,7 @@ export function ProfileSettings() {
const form = useForm<FormData>({
validate: {
newPasswordConfirmation: (value: string, values: FormData) => (value !== values.newPassword ? t`Passwords do not match` : null),
newPasswordConfirmation: (value, values) => (value !== values.newPassword ? t`Passwords do not match` : null),
},
})
const { setValues } = form
@@ -41,13 +41,13 @@ export function ProfileSettings() {
const openDeleteProfileModal = () =>
openConfirmModal({
title: t`Delete account`,
title: <Trans>Delete account</Trans>,
children: (
<Text size="sm">
<Trans>Are you sure you want to delete your account? There's no turning back!</Trans>
</Text>
),
labels: { confirm: t`Confirm`, cancel: t`Cancel` },
labels: { confirm: <Trans>Confirm</Trans>, cancel: <Trans>Cancel</Trans> },
confirmProps: { color: "red" },
onConfirm: () => deleteProfile.execute(),
})
@@ -77,12 +77,19 @@ export function ProfileSettings() {
<form onSubmit={form.onSubmit(saveProfile.execute)}>
<Stack>
<Input.Wrapper label={t`User name`}>
<Input.Wrapper label={<Trans>User name</Trans>}>
<Box>{profile?.name}</Box>
</Input.Wrapper>
<TextInput label={<Trans>API key</Trans>} readOnly value={profile?.apiKey} />
<Input.Wrapper
label={t`OPML export`}
description={t`Export your subscriptions and categories as an OPML file that can be imported in other feed reading services`}
label={<Trans>OPML export</Trans>}
description={
<Trans>
Export your subscriptions and categories as an OPML file that can be imported in other feed reading services
</Trans>
}
>
<Box>
<Anchor href="rest/feed/export" download="commafeed_opml.xml">
@@ -90,21 +97,23 @@ export function ProfileSettings() {
</Anchor>
</Box>
</Input.Wrapper>
<Divider />
<PasswordInput
label={t`Current password`}
description={t`Enter your current password to change profile settings`}
label={<Trans>Current password</Trans>}
description={<Trans>Enter your current password to change profile settings</Trans>}
required
{...form.getInputProps("currentPassword")}
/>
<TextInput type="email" label={t`E-mail`} {...form.getInputProps("email")} required />
<TextInput type="email" label={<Trans>E-mail</Trans>} {...form.getInputProps("email")} required />
<PasswordInput
label={t`New password`}
description={t`Changing password will generate a new API key`}
label={<Trans>New password</Trans>}
description={<Trans>Changing password will generate a new API key</Trans>}
{...form.getInputProps("newPassword")}
/>
<PasswordInput label={t`Confirm password`} {...form.getInputProps("newPasswordConfirmation")} />
<TextInput label={t`API key`} readOnly value={profile?.apiKey} />
<Checkbox label={t`Generate new API key`} {...form.getInputProps("newApiKey", { type: "checkbox" })} />
<PasswordInput label={<Trans>Confirm password</Trans>} {...form.getInputProps("newPasswordConfirmation")} />
<Checkbox label={<Trans>Generate new API key</Trans>} {...form.getInputProps("newApiKey", { type: "checkbox" })} />
<Group>
<Button variant="default" onClick={() => dispatch(redirectToSelectedSource())}>

View File

@@ -1,4 +1,4 @@
import { t } from "@lingui/macro"
import { Trans } from "@lingui/macro"
import { Box, Stack } from "@mantine/core"
import { Constants } from "app/constants"
import {
@@ -27,6 +27,7 @@ const expandedIcon = <TbChevronDown size={16} />
const collapsedIcon = <TbChevronRight size={16} />
const errorThreshold = 9
export function Tree() {
const root = useAppSelector(state => state.tree.rootCategory)
const source = useAppSelector(state => state.entries.source)
@@ -63,7 +64,7 @@ export function Tree() {
const allCategoryNode = () => (
<TreeNode
id={Constants.categories.all.id}
name={t`All`}
name={<Trans>All</Trans>}
icon={allIcon}
unread={categoryUnreadCount(root)}
selected={source.type === "category" && source.id === Constants.categories.all.id}
@@ -76,7 +77,7 @@ export function Tree() {
const starredCategoryNode = () => (
<TreeNode
id={Constants.categories.starred.id}
name={t`Starred`}
name={<Trans>Starred</Trans>}
icon={starredIcon}
unread={0}
selected={source.type === "category" && source.id === Constants.categories.starred.id}

View File

@@ -1,11 +1,12 @@
import { Box, createStyles, Image } from "@mantine/core"
import { Box, Center, createStyles } from "@mantine/core"
import { FeedFavicon } from "components/content/FeedFavicon"
import React, { ReactNode } from "react"
import { UnreadCount } from "./UnreadCount"
interface TreeNodeProps {
id: string
name: string
icon: ReactNode | string
name: ReactNode
icon: ReactNode
unread: number
selected: boolean
expanded?: boolean
@@ -49,11 +50,7 @@ export function TreeNode(props: TreeNodeProps) {
return (
<Box py={1} pl={props.level * 20} className={classes.node} onClick={(e: React.MouseEvent) => props.onClick(e, props.id)}>
<Box mr={6} onClick={(e: React.MouseEvent) => props.onIconClick && props.onIconClick(e, props.id)}>
{typeof props.icon === "string" ? (
<Image withPlaceholder src={props.icon} alt="favicon" width={18} height={18} />
) : (
props.icon
)}
<Center>{typeof props.icon === "string" ? <FeedFavicon url={props.icon} /> : props.icon}</Center>
</Box>
<Box className={classes.nodeText}>{props.name}</Box>
{!props.expanded && (

View File

@@ -1,15 +1,17 @@
import { t } from "@lingui/macro"
import { Box, Center, Image, Kbd, TextInput } from "@mantine/core"
import { t, Trans } from "@lingui/macro"
import { Box, Center, Kbd, TextInput } from "@mantine/core"
import { openSpotlight, SpotlightAction, SpotlightProvider } from "@mantine/spotlight"
import { redirectToFeed } from "app/slices/redirect"
import { useAppDispatch } from "app/store"
import { Subscription } from "app/types"
import { FeedFavicon } from "components/content/FeedFavicon"
import { useMousetrap } from "hooks/useMousetrap"
import { TbSearch } from "react-icons/tb"
export interface TreeSearchProps {
feeds: Subscription[]
}
export function TreeSearch(props: TreeSearchProps) {
const dispatch = useAppDispatch()
@@ -17,7 +19,7 @@ export function TreeSearch(props: TreeSearchProps) {
.sort((f1, f2) => f1.name.localeCompare(f2.name))
.map(f => ({
title: f.name,
icon: <Image withPlaceholder src={f.iconUrl} alt="favicon" width={18} height={18} />,
icon: <FeedFavicon url={f.iconUrl} />,
onTrigger: () => dispatch(redirectToFeed(f.id)),
}))
@@ -39,7 +41,7 @@ export function TreeSearch(props: TreeSearchProps) {
searchIcon={searchIcon}
searchPlaceholder={t`Search`}
shortcut="ctrl+k"
nothingFoundMessage={t`Nothing found`}
nothingFoundMessage={<Trans>Nothing found</Trans>}
>
<TextInput
placeholder={t`Search`}

View File

@@ -0,0 +1,9 @@
export const useBrowserExtension = () => {
// when not in an iframe, window.parent is a reference to window
const isBrowserExtension = window.parent !== window
const openSettingsPage = () => window.parent.postMessage("open-settings-page", "*")
const openAppInNewTab = () => window.parent.postMessage("open-app-in-new-tab", "*")
return { isBrowserExtension, openSettingsPage, openAppInNewTab }
}

View File

@@ -0,0 +1,7 @@
import { ViewMode } from "app/types"
import useLocalStorage from "use-local-storage"
export function useViewMode() {
const [viewMode, setViewMode] = useLocalStorage<ViewMode>("view-mode", "detailed")
return { viewMode, setViewMode }
}

View File

@@ -0,0 +1,24 @@
import { reloadTree } from "app/slices/tree"
import { useAppDispatch } from "app/store"
import { useEffect } from "react"
import WebsocketHeartbeatJs from "websocket-heartbeat-js"
export const useWebSocket = () => {
const dispatch = useAppDispatch()
useEffect(() => {
const currentUrl = new URL(window.location.href)
const wsProtocol = currentUrl.protocol === "http:" ? "ws" : "wss"
const wsUrl = `${wsProtocol}://${currentUrl.hostname}:${currentUrl.port}/ws`
const ws = new WebsocketHeartbeatJs({ url: wsUrl, pingMsg: "ping" })
ws.onmessage = event => {
const { data } = event
if (typeof data === "string") {
if (data.startsWith("new-feed-entries:")) dispatch(reloadTree())
}
}
return () => ws.close()
}, [dispatch])
}

View File

@@ -1,119 +1,59 @@
import { i18n, Messages } from "@lingui/core"
import { i18n } from "@lingui/core"
import { useAppSelector } from "app/store"
import dayjs from "dayjs"
import "dayjs/locale/ar"
import "dayjs/locale/ca"
import "dayjs/locale/cs"
import "dayjs/locale/cy"
import "dayjs/locale/da"
import "dayjs/locale/de"
import "dayjs/locale/en"
import "dayjs/locale/es"
import "dayjs/locale/fa"
import "dayjs/locale/fi"
import "dayjs/locale/fr"
import "dayjs/locale/gl"
import "dayjs/locale/hu"
import "dayjs/locale/id"
import "dayjs/locale/it"
import "dayjs/locale/ja"
import "dayjs/locale/ko"
import "dayjs/locale/ms"
import "dayjs/locale/nb"
import "dayjs/locale/nl"
import "dayjs/locale/nn"
import "dayjs/locale/pl"
import "dayjs/locale/pt"
import "dayjs/locale/ru"
import "dayjs/locale/sk"
import "dayjs/locale/sv"
import "dayjs/locale/tr"
import "dayjs/locale/zh"
import { ar, ca, cs, cy, da, de, en, es, fa, fi, fr, gl, hu, id, it, ja, ko, ms, nb, nl, nn, pl, pt, ru, sk, sv, tr, zh } from "make-plural"
import { useEffect } from "react"
import { messages as arMessages } from "./locales/ar/messages"
import { messages as caMessages } from "./locales/ca/messages"
import { messages as csMessages } from "./locales/cs/messages"
import { messages as cyMessages } from "./locales/cy/messages"
import { messages as daMessages } from "./locales/da/messages"
import { messages as deMessages } from "./locales/de/messages"
import { messages as enMessages } from "./locales/en/messages"
import { messages as esMessages } from "./locales/es/messages"
import { messages as faMessages } from "./locales/fa/messages"
import { messages as fiMessages } from "./locales/fi/messages"
import { messages as frMessages } from "./locales/fr/messages"
import { messages as glMessages } from "./locales/gl/messages"
import { messages as huMessages } from "./locales/hu/messages"
import { messages as idMessages } from "./locales/id/messages"
import { messages as itMessages } from "./locales/it/messages"
import { messages as jaMessages } from "./locales/ja/messages"
import { messages as koMessages } from "./locales/ko/messages"
import { messages as msMessages } from "./locales/ms/messages"
import { messages as nbMessages } from "./locales/nb/messages"
import { messages as nlMessages } from "./locales/nl/messages"
import { messages as nnMessages } from "./locales/nn/messages"
import { messages as plMessages } from "./locales/pl/messages"
import { messages as ptMessages } from "./locales/pt/messages"
import { messages as ruMessages } from "./locales/ru/messages"
import { messages as skMessages } from "./locales/sk/messages"
import { messages as svMessages } from "./locales/sv/messages"
import { messages as trMessages } from "./locales/tr/messages"
import { messages as zhMessages } from "./locales/zh/messages"
interface Locale {
key: string
label: string
messages: Messages
plurals?: (n: number | string, ord?: boolean) => string
daysjsImportFn: () => Promise<ILocale>
}
// add an object to the array to add a new locale
// don't forget to also add it to the 'locales' array in .linguirc
export const locales: Locale[] = [
{ key: "ar", messages: arMessages, plurals: ar, label: "العربية" },
{ key: "ca", messages: caMessages, plurals: ca, label: "Català" },
{ key: "cs", messages: csMessages, plurals: cs, label: "Čeština" },
{ key: "cy", messages: cyMessages, plurals: cy, label: "Cymraeg" },
{ key: "da", messages: daMessages, plurals: da, label: "Danish" },
{ key: "de", messages: deMessages, plurals: de, label: "Deutsch" },
{ key: "en", messages: enMessages, plurals: en, label: "English" },
{ key: "es", messages: esMessages, plurals: es, label: "Español" },
{ key: "fa", messages: faMessages, plurals: fa, label: "فارسی" },
{ key: "fi", messages: fiMessages, plurals: fi, label: "Suomi" },
{ key: "fr", messages: frMessages, plurals: fr, label: "Français" },
{ key: "gl", messages: glMessages, plurals: gl, label: "Galician" },
{ key: "hu", messages: huMessages, plurals: hu, label: "Magyar" },
{ key: "id", messages: idMessages, plurals: id, label: "Indonesian" },
{ key: "it", messages: itMessages, plurals: it, label: "Italiano" },
{ key: "ja", messages: jaMessages, plurals: ja, label: "日本語" },
{ key: "ko", messages: koMessages, plurals: ko, label: "한국어" },
{ key: "ms", messages: msMessages, plurals: ms, label: "Bahasa Malaysian" },
{ key: "nb", messages: nbMessages, plurals: nb, label: "Norsk (bokmål)" },
{ key: "nl", messages: nlMessages, plurals: nl, label: "Nederlands" },
{ key: "nn", messages: nnMessages, plurals: nn, label: "Norsk (nynorsk)" },
{ key: "pl", messages: plMessages, plurals: pl, label: "Polski" },
{ key: "pt", messages: ptMessages, plurals: pt, label: "Português" },
{ key: "ru", messages: ruMessages, plurals: ru, label: "Русский" },
{ key: "sk", messages: skMessages, plurals: sk, label: "Slovenčina" },
{ key: "sv", messages: svMessages, plurals: sv, label: "Svenska" },
{ key: "tr", messages: trMessages, plurals: tr, label: "Türkçe" },
{ key: "zh", messages: zhMessages, plurals: zh, label: "简体中文" },
{ key: "ar", label: "العربية", daysjsImportFn: () => import("dayjs/locale/ar") },
{ key: "ca", label: "Català", daysjsImportFn: () => import("dayjs/locale/ca") },
{ key: "cs", label: "Čeština", daysjsImportFn: () => import("dayjs/locale/cs") },
{ key: "cy", label: "Cymraeg", daysjsImportFn: () => import("dayjs/locale/cy") },
{ key: "da", label: "Danish", daysjsImportFn: () => import("dayjs/locale/da") },
{ key: "de", label: "Deutsch", daysjsImportFn: () => import("dayjs/locale/de") },
{ key: "en", label: "English", daysjsImportFn: () => import("dayjs/locale/en") },
{ key: "es", label: "Español", daysjsImportFn: () => import("dayjs/locale/es") },
{ key: "fa", label: "فارسی", daysjsImportFn: () => import("dayjs/locale/fa") },
{ key: "fi", label: "Suomi", daysjsImportFn: () => import("dayjs/locale/fi") },
{ key: "fr", label: "Français", daysjsImportFn: () => import("dayjs/locale/fr") },
{ key: "gl", label: "Galician", daysjsImportFn: () => import("dayjs/locale/gl") },
{ key: "hu", label: "Magyar", daysjsImportFn: () => import("dayjs/locale/hu") },
{ key: "id", label: "Indonesian", daysjsImportFn: () => import("dayjs/locale/id") },
{ key: "it", label: "Italiano", daysjsImportFn: () => import("dayjs/locale/it") },
{ key: "ja", label: "日本語", daysjsImportFn: () => import("dayjs/locale/ja") },
{ key: "ko", label: "한국어", daysjsImportFn: () => import("dayjs/locale/ko") },
{ key: "ms", label: "Bahasa Malaysian", daysjsImportFn: () => import("dayjs/locale/ms") },
{ key: "nb", label: "Norsk (bokmål)", daysjsImportFn: () => import("dayjs/locale/nb") },
{ key: "nl", label: "Nederlands", daysjsImportFn: () => import("dayjs/locale/nl") },
{ key: "nn", label: "Norsk (nynorsk)", daysjsImportFn: () => import("dayjs/locale/nn") },
{ key: "pl", label: "Polski", daysjsImportFn: () => import("dayjs/locale/pl") },
{ key: "pt", label: "Português", daysjsImportFn: () => import("dayjs/locale/pt") },
{ key: "ru", label: "Русский", daysjsImportFn: () => import("dayjs/locale/ru") },
{ key: "sk", label: "Slovenčina", daysjsImportFn: () => import("dayjs/locale/sk") },
{ key: "sv", label: "Svenska", daysjsImportFn: () => import("dayjs/locale/sv") },
{ key: "tr", label: "Türkçe", daysjsImportFn: () => import("dayjs/locale/tr") },
{ key: "zh", label: "简体中文", daysjsImportFn: () => import("dayjs/locale/zh") },
]
locales.forEach(l => {
i18n.loadLocaleData({
[l.key]: {
plurals: l.plurals,
},
})
i18n.load({
[l.key]: l.messages,
})
})
function activateLocale(locale: string) {
i18n.activate(locale)
dayjs.locale(locale)
// lingui
import(`./locales/${locale}/messages.po`).then(data => {
i18n.load(locale, data.messages)
i18n.activate(locale)
})
// dayjs
locales
.find(l => l.key === locale)
?.daysjsImportFn()
.then(() => dayjs.locale(locale))
}
export const useI18n = () => {

View File

@@ -13,6 +13,14 @@ msgstr ""
"Language-Team: \n"
"Plural-Forms: \n"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "<0>CommaFeed is an open-source project. Sources are hosted on </0><1>GitHub</1>."
msgstr ""
#: src/pages/app/FeedDetailsPage.tsx
msgid "<0>Complete syntax is available </0><1>here</1>."
msgstr ""
@@ -21,14 +29,14 @@ msgstr ""
msgid "<0>Have an account?</0><1>Log in!</1>"
msgstr "<0> هل لديك حساب؟ </0> <1> تسجيل الدخول! </ 1>"
#: src/pages/app/DonatePage.tsx
msgid "<0>Hey,</0><1>I'm Jérémie from Belgium and I've been working on CommaFeed in my free time for over 10 years now. Thanks for taking an interest in helping me continue supporting CommaFeed.</1>"
msgstr ""
#: src/pages/auth/LoginPage.tsx
msgid "<0>Need an account?</0><1>Sign up!</1>"
msgstr "<0> هل تحتاج إلى حساب؟ </0> <1> اشترك! </ 1>"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "مفتاح API"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/AboutPage.tsx
msgid "About"
@@ -75,6 +83,10 @@ msgstr "ملف opml هو ملف XML يحتوي على عناوين URL للتغ
msgid "Analyze feed"
msgstr "تحليل التغذية"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "مفتاح API"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Are you sure you want to delete category <0>{categoryName}</0>?"
msgstr "هل أنت متأكد أنك تريد حذف الفئة <0> {categoryName} </0>؟"
@@ -123,6 +135,7 @@ msgstr "ملحقات المستعرض"
#: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx
@@ -150,10 +163,6 @@ msgstr "سيؤدي تغيير كلمة المرور إلى إنشاء مفتاح
msgid "Check that the feed is working"
msgstr "تأكد من عمل الخلاصة"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>."
msgstr "CommaFeed هو مشروع مفتوح المصدر. "
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item"
msgstr "CommaFeed التالي العنصر غير المقروء"
@@ -194,6 +203,18 @@ msgstr "السيطرة"
msgid "Current password"
msgstr "كلمة المرور الحالية"
#: src/pages/app/SettingsPage.tsx
msgid "Custom code"
msgstr ""
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom CSS rules that will be applied"
msgstr ""
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom JS code that will be executed on page load"
msgstr ""
#: src/pages/admin/AdminUsersPage.tsx
msgid "Date created"
msgstr "تاريخ الإنشاء"
@@ -202,15 +223,15 @@ msgstr "تاريخ الإنشاء"
msgid "Delete"
msgstr "حذف"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "حذف الفئة"
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
msgid "Delete account"
msgstr "حذف الحساب"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "حذف الفئة"
#: src/pages/admin/AdminUsersPage.tsx
msgid "Delete user"
msgstr "حذف المستخدم"
@@ -219,11 +240,20 @@ msgstr "حذف المستخدم"
msgid "Desc"
msgstr "تنازلي"
#: src/components/header/ProfileMenu.tsx
msgid "Detailed"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/SettingsPage.tsx
msgid "Display"
msgstr "عرض"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/DonatePage.tsx
msgid "Donate"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "Download"
msgstr "تنزيل"
@@ -278,15 +308,28 @@ msgstr "موسع"
msgid "Export your subscriptions and categories as an OPML file that can be imported in other feed reading services"
msgstr "قم بتصدير اشتراكاتك وفئاتك كملف OPML يمكن استيراده في خدمات قراءة الأعلاف الأخرى"
#: src/components/header/Header.tsx
#: src/pages/WelcomePage.tsx
msgid "Extension options"
msgstr ""
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "اسم الخلاصة"
#: src/components/content/add/Subscribe.tsx
#: src/components/content/add/Subscribe.tsx
#: src/pages/app/FeedDetailsPage.tsx
msgid "Feed URL"
msgstr "موجز URL"
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "اسم الخلاصة"
#: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now"
msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "الملف مطلوب"
#: src/pages/app/FeedDetailsPage.tsx
msgid "Filtering expression"
@@ -312,14 +355,18 @@ msgstr "إنشاء مفتاح API جديد"
msgid "Generated feed url"
msgstr "رابط الخلاصة المولدة"
#: src/pages/app/AboutPage.tsx
msgid "Go to the API documentation."
msgstr "انتقل إلى وثائق API."
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Go to {0}"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Go to the All view"
msgstr "اذهب إلى طريقة العرض \"الكل\""
#: src/pages/app/AboutPage.tsx
msgid "Go to the API documentation."
msgstr "انتقل إلى وثائق API."
#: src/pages/app/AboutPage.tsx
msgid "Goodies"
msgstr "الأشياء الجيدة"
@@ -336,10 +383,6 @@ msgstr "إذا لم يكن فارغًا ، فسيتم تقييم التعبير
msgid "If you encounter an issue, please report it on the issues page of the GitHub project."
msgstr "إذا واجهت مشكلة ، فالرجاء الإبلاغ عنها على صفحة مشكلات مشروع GitHub."
#: src/pages/app/AboutPage.tsx
msgid "If you like this project, please consider a donation to support the developer and help cover the costs of keeping this website online."
msgstr "إذا أعجبك هذا المشروع ، فيرجى التفكير في التبرع لدعم المطور والمساعدة في تغطية تكاليف إبقاء هذا الموقع على الإنترنت."
#: src/components/content/add/ImportOpml.tsx
msgid "Import"
msgstr "استيراد"
@@ -348,6 +391,7 @@ msgstr "استيراد"
msgid "In expanded view, scrolling through entries mark them as read"
msgstr "في العرض الموسع ، التمرير عبر الإدخالات وضع علامة عليها كمقروءة"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Keep unread"
msgstr "إبقاء غير مقروءة"
@@ -397,6 +441,7 @@ msgstr "تحميل العلامات ..."
#: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx
#: src/pages/WelcomePage.tsx
msgid "Log in"
msgstr "تسجيل الدخول"
@@ -404,6 +449,10 @@ msgstr "تسجيل الدخول"
msgid "Logout"
msgstr "تسجيل الخروج"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Long press"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/admin/AdminUsersPage.tsx
msgid "Manage users"
@@ -418,10 +467,12 @@ msgstr "تعليم الكل كمقروء"
msgid "Mark all entries as read"
msgstr "تعليم كافة الإدخالات كمقروءة"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Mark as read"
msgstr "وضع علامة كمقروء"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Mark as read up to here"
msgstr "وضع علامة كمقروءة حتى هنا"
@@ -430,6 +481,10 @@ msgstr "وضع علامة كمقروءة حتى هنا"
msgid "Metrics"
msgstr "المقاييس"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Middle click"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Move the page down"
msgstr "تحريك الصفحة لأسفل"
@@ -482,19 +537,6 @@ msgstr "لا مزيد من الإدخالات"
msgid "Nothing found"
msgstr "لم يتم العثور على شيء"
#: src/pages/app/AddPage.tsx
msgid "OPML"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "OPML export"
msgstr "تصدير OPML"
#: src/components/content/add/ImportOpml.tsx
#: src/components/content/add/ImportOpml.tsx
msgid "OPML file"
msgstr "ملف OPML"
#: src/pages/app/AboutPage.tsx
msgid "Oldest first"
msgstr "الأقدم أولا"
@@ -503,6 +545,10 @@ msgstr "الأقدم أولا"
msgid "Oops!"
msgstr "اوووه!"
#: src/components/header/Header.tsx
msgid "Open CommaFeed"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open current entry in a new tab"
msgstr "فتح الإدخال الحالي في علامة تبويب جديدة"
@@ -515,6 +561,14 @@ msgstr "فتح الإدخال الحالي في علامة تبويب جديدة
msgid "Open link"
msgstr "افتح الرابط"
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Open link in new background tab"
msgstr ""
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Open link in new tab"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open next entry"
msgstr "فتح الإدخال التالي"
@@ -527,6 +581,19 @@ msgstr "فتح الإدخال السابق"
msgid "Open/close current entry"
msgstr "فتح / إغلاق الإدخال الحالي"
#: src/pages/app/AddPage.tsx
msgid "OPML"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "OPML export"
msgstr "تصدير OPML"
#: src/components/content/add/ImportOpml.tsx
#: src/components/content/add/ImportOpml.tsx
msgid "OPML file"
msgstr "ملف OPML"
#: src/pages/app/AboutPage.tsx
msgid "Order"
msgstr "طلب"
@@ -564,10 +631,6 @@ msgstr "المنـصب"
msgid "Profile"
msgstr "الملف الشخصي"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/pages/auth/PasswordRecoveryPage.tsx
msgid "Recover password"
msgstr "استعادة كلمة السر"
@@ -581,7 +644,16 @@ msgstr "تحديث"
msgid "Registrations are closed on this CommaFeed instance"
msgstr "تم إغلاق التسجيلات في مثيل CommaFeed هذا"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx
@@ -632,6 +704,14 @@ msgstr "مشاركة المواقع"
msgid "Shift"
msgstr "الحلقة"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Show entry menu (desktop)"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Show entry menu (mobile)"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Show feeds and categories with no unread entries"
msgstr "إظهار موجز ويب والفئات التي لا تحتوي على إدخالات غير مقروءة"
@@ -642,6 +722,7 @@ msgstr "إظهار تعليمات اختصار لوحة المفاتيح"
#: src/pages/auth/RegistrationPage.tsx
#: src/pages/auth/RegistrationPage.tsx
#: src/pages/WelcomePage.tsx
msgid "Sign up"
msgstr "قم بالتسجيل"
@@ -654,6 +735,7 @@ msgstr "شيء سيء حدث للتو ..."
msgid "Space"
msgstr "فضاء"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Star"
msgstr "النجم"
@@ -669,23 +751,29 @@ msgstr "مميز بنجمة"
msgid "Subscribe"
msgstr "اشتراك"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "عنوان URL للاشتراك"
#: src/components/content/add/Subscribe.tsx
msgid "Subscribe to the feed"
msgstr "الاشتراك في موجز ويب"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "عنوان URL للاشتراك"
#: src/components/Alert.tsx
msgid "Success"
msgstr "النجاح"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Swipe header to the right"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to dark theme"
msgstr "التبديل إلى النسق الداكن"
#: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to light theme"
msgstr "قم بالتبديل إلى النسق الفاتح"
@@ -709,10 +797,15 @@ msgstr "تبديل قراءة حالة الإدخال الحالي"
msgid "Try out CommaFeed with the demo account: demo/demo"
msgstr "جرب CommaFeed باستخدام الحساب التجريبي: تجريبي / تجريبي"
#: src/pages/WelcomePage.tsx
msgid "Try the demo!"
msgstr ""
#: src/components/header/Header.tsx
msgid "Unread"
msgstr "غير مقروءة"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Unstar"
msgstr "إلغاء النجم"
@@ -722,15 +815,15 @@ msgstr "إلغاء النجم"
msgid "Unsubscribe"
msgstr "إلغاء الاشتراك"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "اسم المستخدم"
#: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx
msgid "User Name or E-mail"
msgstr "اسم المستخدم أو البريد الإلكتروني"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "اسم المستخدم"
#: src/components/Alert.tsx
msgid "Warning"
msgstr "تحذير"
@@ -743,6 +836,6 @@ 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/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "الملف مطلوب"
#: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh."
msgstr ""

View File

@@ -13,6 +13,14 @@ msgstr ""
"Language-Team: \n"
"Plural-Forms: \n"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "<0>CommaFeed is an open-source project. Sources are hosted on </0><1>GitHub</1>."
msgstr ""
#: src/pages/app/FeedDetailsPage.tsx
msgid "<0>Complete syntax is available </0><1>here</1>."
msgstr ""
@@ -21,14 +29,14 @@ msgstr ""
msgid "<0>Have an account?</0><1>Log in!</1>"
msgstr "<0>Teniu un compte?</0><1>Inicieu la sessió!</1>"
#: src/pages/app/DonatePage.tsx
msgid "<0>Hey,</0><1>I'm Jérémie from Belgium and I've been working on CommaFeed in my free time for over 10 years now. Thanks for taking an interest in helping me continue supporting CommaFeed.</1>"
msgstr ""
#: src/pages/auth/LoginPage.tsx
msgid "<0>Need an account?</0><1>Sign up!</1>"
msgstr "<0>Necessites un compte?</0><1>Registreu-vos!</1>"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "clau API"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/AboutPage.tsx
msgid "About"
@@ -75,6 +83,10 @@ msgstr "Un fitxer opml és un fitxer XML que conté URL i categories de canals.
msgid "Analyze feed"
msgstr "Analitzar el feed"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "clau API"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Are you sure you want to delete category <0>{categoryName}</0>?"
msgstr "Estàs segur que vols suprimir la categoria <0>{categoryName}</0>?"
@@ -123,6 +135,7 @@ msgstr "Extensions del navegador"
#: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx
@@ -150,10 +163,6 @@ msgstr "Canviar la contrasenya generarà una nova clau d'API"
msgid "Check that the feed is working"
msgstr "Comproveu que el canal funciona"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>."
msgstr "CommaFeed és un projecte de codi obert. "
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item"
msgstr "CommaFeed següent element no llegit"
@@ -194,6 +203,18 @@ msgstr ""
msgid "Current password"
msgstr "Contrasenya actual"
#: src/pages/app/SettingsPage.tsx
msgid "Custom code"
msgstr ""
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom CSS rules that will be applied"
msgstr ""
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom JS code that will be executed on page load"
msgstr ""
#: src/pages/admin/AdminUsersPage.tsx
msgid "Date created"
msgstr "Data de creació"
@@ -202,15 +223,15 @@ msgstr "Data de creació"
msgid "Delete"
msgstr "Eliminar"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Suprimeix la categoria"
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
msgid "Delete account"
msgstr "Suprimeix el compte"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Suprimeix la categoria"
#: src/pages/admin/AdminUsersPage.tsx
msgid "Delete user"
msgstr "Suprimeix l'usuari"
@@ -219,11 +240,20 @@ msgstr "Suprimeix l'usuari"
msgid "Desc"
msgstr ""
#: src/components/header/ProfileMenu.tsx
msgid "Detailed"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/SettingsPage.tsx
msgid "Display"
msgstr "Mostra"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/DonatePage.tsx
msgid "Donate"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "Download"
msgstr "Descarrega"
@@ -278,15 +308,28 @@ msgstr "Ampliat"
msgid "Export your subscriptions and categories as an OPML file that can be imported in other feed reading services"
msgstr "exporteu les vostres subscripcions i categories com a fitxer OPML que es pot importar a altres serveis de lectura de feeds"
#: src/components/header/Header.tsx
#: src/pages/WelcomePage.tsx
msgid "Extension options"
msgstr ""
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "Nom del canal"
#: src/components/content/add/Subscribe.tsx
#: src/components/content/add/Subscribe.tsx
#: src/pages/app/FeedDetailsPage.tsx
msgid "Feed URL"
msgstr "URL del canal"
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "Nom del canal"
#: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now"
msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "el fitxer és necessari"
#: src/pages/app/FeedDetailsPage.tsx
msgid "Filtering expression"
@@ -312,14 +355,18 @@ msgstr "Genera una nova clau d'API"
msgid "Generated feed url"
msgstr "URL del feed generat"
#: src/pages/app/AboutPage.tsx
msgid "Go to the API documentation."
msgstr "Vés a la documentació de l'API."
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Go to {0}"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Go to the All view"
msgstr "Vés a la vista Tot"
#: src/pages/app/AboutPage.tsx
msgid "Go to the API documentation."
msgstr "Vés a la documentació de l'API."
#: src/pages/app/AboutPage.tsx
msgid "Goodies"
msgstr "Bones"
@@ -336,10 +383,6 @@ msgstr "Si no està buida, una expressió que s'avalua com a \"vertader\" o \"fa
msgid "If you encounter an issue, please report it on the issues page of the GitHub project."
msgstr "Si trobeu un problema, informeu-lo a la pàgina de problemes del projecte GitHub."
#: src/pages/app/AboutPage.tsx
msgid "If you like this project, please consider a donation to support the developer and help cover the costs of keeping this website online."
msgstr "Si t'agrada aquest projecte, considera una donació per donar suport al desenvolupador i ajudar a cobrir els costos de mantenir aquest lloc web en línia."
#: src/components/content/add/ImportOpml.tsx
msgid "Import"
msgstr "Importació"
@@ -348,6 +391,7 @@ msgstr "Importació"
msgid "In expanded view, scrolling through entries mark them as read"
msgstr "a la vista ampliada, desplaçant-se per les entrades les marqueu com a llegides"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Keep unread"
msgstr "Mantenir sense llegir"
@@ -397,6 +441,7 @@ msgstr "Carregant les etiquetes..."
#: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx
#: src/pages/WelcomePage.tsx
msgid "Log in"
msgstr "Inicia sessió"
@@ -404,6 +449,10 @@ msgstr "Inicia sessió"
msgid "Logout"
msgstr "Tanca sessió"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Long press"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/admin/AdminUsersPage.tsx
msgid "Manage users"
@@ -418,10 +467,12 @@ msgstr "Marca-ho tot com a llegit"
msgid "Mark all entries as read"
msgstr "Marqueu totes les entrades com a llegides"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Mark as read"
msgstr "Marca com a llegit"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Mark as read up to here"
msgstr "Marca com a llegit fins aquí"
@@ -430,6 +481,10 @@ msgstr "Marca com a llegit fins aquí"
msgid "Metrics"
msgstr "mètriques"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Middle click"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Move the page down"
msgstr "Mou la pàgina cap avall"
@@ -482,19 +537,6 @@ msgstr "No hi ha més entrades"
msgid "Nothing found"
msgstr "No s'ha trobat res"
#: src/pages/app/AddPage.tsx
msgid "OPML"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "OPML export"
msgstr "Exportació OPML"
#: src/components/content/add/ImportOpml.tsx
#: src/components/content/add/ImportOpml.tsx
msgid "OPML file"
msgstr "Fitxer OPML"
#: src/pages/app/AboutPage.tsx
msgid "Oldest first"
msgstr "el més vell primer"
@@ -503,6 +545,10 @@ msgstr "el més vell primer"
msgid "Oops!"
msgstr "Vaja!"
#: src/components/header/Header.tsx
msgid "Open CommaFeed"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open current entry in a new tab"
msgstr "Obre l'entrada actual en una pestanya nova"
@@ -515,6 +561,14 @@ msgstr "Obre l'entrada actual en una pestanya nova al fons"
msgid "Open link"
msgstr "Enllaç obert"
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Open link in new background tab"
msgstr ""
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Open link in new tab"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open next entry"
msgstr "Obre la següent entrada"
@@ -527,6 +581,19 @@ msgstr "Obre l'entrada anterior"
msgid "Open/close current entry"
msgstr "Obrir/tancar l'entrada actual"
#: src/pages/app/AddPage.tsx
msgid "OPML"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "OPML export"
msgstr "Exportació OPML"
#: src/components/content/add/ImportOpml.tsx
#: src/components/content/add/ImportOpml.tsx
msgid "OPML file"
msgstr "Fitxer OPML"
#: src/pages/app/AboutPage.tsx
msgid "Order"
msgstr "Ordre"
@@ -564,10 +631,6 @@ msgstr "Posició"
msgid "Profile"
msgstr "Perfil"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr "API REST"
#: src/pages/auth/PasswordRecoveryPage.tsx
msgid "Recover password"
msgstr "Recuperar la contrasenya"
@@ -581,7 +644,16 @@ msgstr "Actualitzar"
msgid "Registrations are closed on this CommaFeed instance"
msgstr "Els registres estan tancats en aquesta instància de CommaFeed"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr "API REST"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx
@@ -632,6 +704,14 @@ msgstr "Compartir llocs"
msgid "Shift"
msgstr "canvi"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Show entry menu (desktop)"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Show entry menu (mobile)"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Show feeds and categories with no unread entries"
msgstr "Mostra feeds i categories sense entrades no llegides"
@@ -642,6 +722,7 @@ msgstr "Mostra l'ajuda de la drecera del teclat"
#: src/pages/auth/RegistrationPage.tsx
#: src/pages/auth/RegistrationPage.tsx
#: src/pages/WelcomePage.tsx
msgid "Sign up"
msgstr "Inscriu-te"
@@ -654,6 +735,7 @@ msgstr "Acaba de passar una cosa dolenta..."
msgid "Space"
msgstr "Espai"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Star"
msgstr "Estrella"
@@ -669,23 +751,29 @@ msgstr "Estrellat"
msgid "Subscribe"
msgstr "Subscriu-te"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "URL de subscripció"
#: src/components/content/add/Subscribe.tsx
msgid "Subscribe to the feed"
msgstr "Subscriu-te al canal"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "URL de subscripció"
#: src/components/Alert.tsx
msgid "Success"
msgstr "Éxit"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Swipe header to the right"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to dark theme"
msgstr "Canvia al tema fosc"
#: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to light theme"
msgstr "Canvia al tema clar"
@@ -709,10 +797,15 @@ msgstr "Canvia l'estat de lectura de l'entrada actual"
msgid "Try out CommaFeed with the demo account: demo/demo"
msgstr "Proveu CommaFeed amb el compte de demostració: demo/demo"
#: src/pages/WelcomePage.tsx
msgid "Try the demo!"
msgstr ""
#: src/components/header/Header.tsx
msgid "Unread"
msgstr "Sense llegir"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Unstar"
msgstr "Desestrellar"
@@ -722,15 +815,15 @@ msgstr "Desestrellar"
msgid "Unsubscribe"
msgstr "Donar-se de baixa"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Nom d'usuari"
#: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx
msgid "User Name or E-mail"
msgstr "Nom d'usuari o correu electrònic"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Nom d'usuari"
#: src/components/Alert.tsx
msgid "Warning"
msgstr "Avís"
@@ -743,6 +836,6 @@ 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/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "el fitxer és necessari"
#: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh."
msgstr ""

View File

@@ -13,6 +13,14 @@ msgstr ""
"Language-Team: \n"
"Plural-Forms: \n"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "<0>CommaFeed is an open-source project. Sources are hosted on </0><1>GitHub</1>."
msgstr ""
#: src/pages/app/FeedDetailsPage.tsx
msgid "<0>Complete syntax is available </0><1>here</1>."
msgstr ""
@@ -21,14 +29,14 @@ msgstr ""
msgid "<0>Have an account?</0><1>Log in!</1>"
msgstr "<0>Máte účet?</0><1>Přihlaste se!</1>"
#: src/pages/app/DonatePage.tsx
msgid "<0>Hey,</0><1>I'm Jérémie from Belgium and I've been working on CommaFeed in my free time for over 10 years now. Thanks for taking an interest in helping me continue supporting CommaFeed.</1>"
msgstr ""
#: src/pages/auth/LoginPage.tsx
msgid "<0>Need an account?</0><1>Sign up!</1>"
msgstr "<0>Potřebujete účet?</0><1>Zaregistrujte se!</1>"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "Klíč API"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/AboutPage.tsx
msgid "About"
@@ -75,6 +83,10 @@ msgstr "Soubor opml je soubor XML obsahující adresy URL a kategorie zdrojů. "
msgid "Analyze feed"
msgstr "Analyzujte krmivo"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "Klíč API"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Are you sure you want to delete category <0>{categoryName}</0>?"
msgstr "Opravdu chcete smazat kategorii <0>{categoryName}</0>?"
@@ -123,6 +135,7 @@ msgstr "Rozšíření prohlížeče"
#: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx
@@ -150,10 +163,6 @@ msgstr "Změna hesla vygeneruje nový klíč API"
msgid "Check that the feed is working"
msgstr "Zkontrolujte, zda zdroj funguje"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>."
msgstr "CommaFeed je projekt s otevřeným zdrojovým kódem. "
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item"
msgstr "CommaFeed další nepřečtená položka"
@@ -194,6 +203,18 @@ msgstr ""
msgid "Current password"
msgstr "Aktuální heslo"
#: src/pages/app/SettingsPage.tsx
msgid "Custom code"
msgstr ""
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom CSS rules that will be applied"
msgstr ""
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom JS code that will be executed on page load"
msgstr ""
#: src/pages/admin/AdminUsersPage.tsx
msgid "Date created"
msgstr "Datum vytvoření"
@@ -202,15 +223,15 @@ msgstr "Datum vytvoření"
msgid "Delete"
msgstr "Smazat"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Odstranit kategorii"
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
msgid "Delete account"
msgstr "Smazat účet"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Odstranit kategorii"
#: src/pages/admin/AdminUsersPage.tsx
msgid "Delete user"
msgstr "Smazat uživatele"
@@ -219,11 +240,20 @@ msgstr "Smazat uživatele"
msgid "Desc"
msgstr ""
#: src/components/header/ProfileMenu.tsx
msgid "Detailed"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/SettingsPage.tsx
msgid "Display"
msgstr "Displej"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/DonatePage.tsx
msgid "Donate"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "Download"
msgstr "Stáhnout"
@@ -278,15 +308,28 @@ msgstr "Rozbaleno"
msgid "Export your subscriptions and categories as an OPML file that can be imported in other feed reading services"
msgstr "Exportujte svá předplatná a kategorie jako soubor OPML, který lze importovat do jiných služeb čtení kanálů"
#: src/components/header/Header.tsx
#: src/pages/WelcomePage.tsx
msgid "Extension options"
msgstr ""
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "Název zdroje"
#: src/components/content/add/Subscribe.tsx
#: src/components/content/add/Subscribe.tsx
#: src/pages/app/FeedDetailsPage.tsx
msgid "Feed URL"
msgstr "URL zdroje"
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "Název zdroje"
#: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now"
msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr ""
#: src/pages/app/FeedDetailsPage.tsx
msgid "Filtering expression"
@@ -312,14 +355,18 @@ msgstr "Vygenerujte nový klíč API"
msgid "Generated feed url"
msgstr "Generovaná adresa URL zdroje"
#: src/pages/app/AboutPage.tsx
msgid "Go to the API documentation."
msgstr "Přejděte na dokumentaci API."
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Go to {0}"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Go to the All view"
msgstr "Přejděte do zobrazení Vše"
#: src/pages/app/AboutPage.tsx
msgid "Go to the API documentation."
msgstr "Přejděte na dokumentaci API."
#: src/pages/app/AboutPage.tsx
msgid "Goodies"
msgstr "Dobroty"
@@ -336,10 +383,6 @@ msgstr "Pokud není prázdný, výraz vyhodnocený jako 'true' nebo 'false'. "
msgid "If you encounter an issue, please report it on the issues page of the GitHub project."
msgstr "Pokud narazíte na problém, nahlaste jej prosím na stránce problémů projektu GitHub."
#: src/pages/app/AboutPage.tsx
msgid "If you like this project, please consider a donation to support the developer and help cover the costs of keeping this website online."
msgstr "Pokud se vám tento projekt líbí, zvažte prosím dar na podporu vývojáře a pomozte pokrýt náklady na udržování tohoto webu online."
#: src/components/content/add/ImportOpml.tsx
msgid "Import"
msgstr ""
@@ -348,6 +391,7 @@ msgstr ""
msgid "In expanded view, scrolling through entries mark them as read"
msgstr "V rozšířeném zobrazení je procházením označíte jako přečtené"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Keep unread"
msgstr "Ponechat nepřečtené"
@@ -397,6 +441,7 @@ msgstr "Načítání značek..."
#: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx
#: src/pages/WelcomePage.tsx
msgid "Log in"
msgstr "Přihlaste se"
@@ -404,6 +449,10 @@ msgstr "Přihlaste se"
msgid "Logout"
msgstr "Odhlášení"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Long press"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/admin/AdminUsersPage.tsx
msgid "Manage users"
@@ -418,10 +467,12 @@ msgstr "Označit vše jako přečtené"
msgid "Mark all entries as read"
msgstr "Označte všechny položky jako přečtené"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Mark as read"
msgstr "Označit jako přečtené"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Mark as read up to here"
msgstr "Označit jako přečtené až sem"
@@ -430,6 +481,10 @@ msgstr "Označit jako přečtené až sem"
msgid "Metrics"
msgstr "Metriky"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Middle click"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Move the page down"
msgstr "Přesuňte stránku dolů"
@@ -482,19 +537,6 @@ msgstr "Žádné další záznamy"
msgid "Nothing found"
msgstr "Nic nebylo nalezeno"
#: src/pages/app/AddPage.tsx
msgid "OPML"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "OPML export"
msgstr "Export OPML"
#: src/components/content/add/ImportOpml.tsx
#: src/components/content/add/ImportOpml.tsx
msgid "OPML file"
msgstr "soubor OPML"
#: src/pages/app/AboutPage.tsx
msgid "Oldest first"
msgstr "Nejdříve nejstarší"
@@ -503,6 +545,10 @@ msgstr "Nejdříve nejstarší"
msgid "Oops!"
msgstr "Jejda!"
#: src/components/header/Header.tsx
msgid "Open CommaFeed"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open current entry in a new tab"
msgstr "Otevřete aktuální položku na nové kartě"
@@ -515,6 +561,14 @@ msgstr "Otevřít aktuální položku na nové kartě na pozadí"
msgid "Open link"
msgstr "Otevřít odkaz"
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Open link in new background tab"
msgstr ""
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Open link in new tab"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open next entry"
msgstr "Otevřete další položku"
@@ -527,6 +581,19 @@ msgstr "Otevřít předchozí záznam"
msgid "Open/close current entry"
msgstr "Otevřít/zavřít aktuální položku"
#: src/pages/app/AddPage.tsx
msgid "OPML"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "OPML export"
msgstr "Export OPML"
#: src/components/content/add/ImportOpml.tsx
#: src/components/content/add/ImportOpml.tsx
msgid "OPML file"
msgstr "soubor OPML"
#: src/pages/app/AboutPage.tsx
msgid "Order"
msgstr "Objednávka"
@@ -564,10 +631,6 @@ msgstr "Pozice"
msgid "Profile"
msgstr "Profil"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/pages/auth/PasswordRecoveryPage.tsx
msgid "Recover password"
msgstr "Obnovte heslo"
@@ -581,7 +644,16 @@ msgstr "Obnovit"
msgid "Registrations are closed on this CommaFeed instance"
msgstr "V této instanci CommaFeed jsou registrace uzavřeny"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx
@@ -632,6 +704,14 @@ msgstr "Stránky pro sdílení"
msgid "Shift"
msgstr "Směna"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Show entry menu (desktop)"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Show entry menu (mobile)"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Show feeds and categories with no unread entries"
msgstr "Zobrazit kanály a kategorie bez nepřečtených položek"
@@ -642,6 +722,7 @@ msgstr "Zobrazit nápovědu ke klávesovým zkratkám"
#: src/pages/auth/RegistrationPage.tsx
#: src/pages/auth/RegistrationPage.tsx
#: src/pages/WelcomePage.tsx
msgid "Sign up"
msgstr "Zaregistrujte se"
@@ -654,6 +735,7 @@ msgstr "Právě se stalo něco špatného..."
msgid "Space"
msgstr "Vesmír"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Star"
msgstr "Hvězda"
@@ -669,23 +751,29 @@ msgstr "S hvězdičkou"
msgid "Subscribe"
msgstr "Přihlaste se"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "URL pro přihlášení"
#: src/components/content/add/Subscribe.tsx
msgid "Subscribe to the feed"
msgstr "Přihlaste se k odběru kanálu"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "URL pro přihlášení"
#: src/components/Alert.tsx
msgid "Success"
msgstr "Úspěch"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Swipe header to the right"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to dark theme"
msgstr "Přepněte na tmavý motiv"
#: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to light theme"
msgstr "Přepněte na světlé téma"
@@ -709,10 +797,15 @@ msgstr "Přepne stav čtení aktuálního záznamu"
msgid "Try out CommaFeed with the demo account: demo/demo"
msgstr "Vyzkoušejte CommaFeed s demo účtem: demo/demo"
#: src/pages/WelcomePage.tsx
msgid "Try the demo!"
msgstr ""
#: src/components/header/Header.tsx
msgid "Unread"
msgstr "Nepřečteno"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Unstar"
msgstr "Odstranit hvězdu"
@@ -722,15 +815,15 @@ msgstr "Odstranit hvězdu"
msgid "Unsubscribe"
msgstr "Odhlásit odběr"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Uživatelské jméno"
#: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx
msgid "User Name or E-mail"
msgstr "Uživatelské jméno nebo e-mail"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Uživatelské jméno"
#: src/components/Alert.tsx
msgid "Warning"
msgstr "Varování"
@@ -743,6 +836,6 @@ 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/content/add/ImportOpml.tsx
msgid "file is required"
#: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh."
msgstr ""

View File

@@ -13,6 +13,14 @@ msgstr ""
"Language-Team: \n"
"Plural-Forms: \n"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "<0>CommaFeed is an open-source project. Sources are hosted on </0><1>GitHub</1>."
msgstr ""
#: src/pages/app/FeedDetailsPage.tsx
msgid "<0>Complete syntax is available </0><1>here</1>."
msgstr ""
@@ -21,14 +29,14 @@ msgstr ""
msgid "<0>Have an account?</0><1>Log in!</1>"
msgstr "<0>A oes gennych gyfrif?</0><1>Mewngofnodi!</1>"
#: src/pages/app/DonatePage.tsx
msgid "<0>Hey,</0><1>I'm Jérémie from Belgium and I've been working on CommaFeed in my free time for over 10 years now. Thanks for taking an interest in helping me continue supporting CommaFeed.</1>"
msgstr ""
#: src/pages/auth/LoginPage.tsx
msgid "<0>Need an account?</0><1>Sign up!</1>"
msgstr "<0>Angen cyfrif?</0><1>Ymunwch!</1>"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "Allwedd API"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/AboutPage.tsx
msgid "About"
@@ -75,6 +83,10 @@ msgstr "Mae ffeil opml yn ffeil XML sy'n cynnwys URLs porthiant a chategorïau.
msgid "Analyze feed"
msgstr "Dadansoddi porthiant"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "Allwedd API"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Are you sure you want to delete category <0>{categoryName}</0>?"
msgstr "Ydych chi'n siŵr eich bod am ddileu categori <0>{categoryName}</0>?"
@@ -123,6 +135,7 @@ msgstr "Estyniadau porwr"
#: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx
@@ -150,10 +163,6 @@ msgstr "Bydd newid cyfrinair yn cynhyrchu allwedd API newydd"
msgid "Check that the feed is working"
msgstr "Gwiriwch fod y porthiant yn gweithio"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>."
msgstr "Mae ComaFeed yn brosiect ffynhonnell agored. "
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item"
msgstr "CommaFeed eitem nesaf heb ei darllen"
@@ -194,6 +203,18 @@ msgstr ""
msgid "Current password"
msgstr "Cyfrinair presennol"
#: src/pages/app/SettingsPage.tsx
msgid "Custom code"
msgstr ""
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom CSS rules that will be applied"
msgstr ""
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom JS code that will be executed on page load"
msgstr ""
#: src/pages/admin/AdminUsersPage.tsx
msgid "Date created"
msgstr "Dyddiad creu"
@@ -202,15 +223,15 @@ msgstr "Dyddiad creu"
msgid "Delete"
msgstr "Dileu"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Dileu Categori"
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
msgid "Delete account"
msgstr "Dileu cyfrif"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Dileu Categori"
#: src/pages/admin/AdminUsersPage.tsx
msgid "Delete user"
msgstr "Dileu defnyddiwr"
@@ -219,11 +240,20 @@ msgstr "Dileu defnyddiwr"
msgid "Desc"
msgstr "Rhag"
#: src/components/header/ProfileMenu.tsx
msgid "Detailed"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/SettingsPage.tsx
msgid "Display"
msgstr "Arddangos"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/DonatePage.tsx
msgid "Donate"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "Download"
msgstr "Lawrlwytho"
@@ -278,15 +308,28 @@ msgstr "Ehangu"
msgid "Export your subscriptions and categories as an OPML file that can be imported in other feed reading services"
msgstr "Allforio eich tanysgrifiadau a'ch categorïau fel ffeil OPML y gellir ei mewnforio i wasanaethau darllen porthiant eraill"
#: src/components/header/Header.tsx
#: src/pages/WelcomePage.tsx
msgid "Extension options"
msgstr ""
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "Enw porthiant"
#: src/components/content/add/Subscribe.tsx
#: src/components/content/add/Subscribe.tsx
#: src/pages/app/FeedDetailsPage.tsx
msgid "Feed URL"
msgstr "URL porthiant"
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "Enw porthiant"
#: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now"
msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "mae angen y ffeil"
#: src/pages/app/FeedDetailsPage.tsx
msgid "Filtering expression"
@@ -312,14 +355,18 @@ msgstr "Cynhyrchu allwedd API newydd"
msgid "Generated feed url"
msgstr "url porthiant a gynhyrchir"
#: src/pages/app/AboutPage.tsx
msgid "Go to the API documentation."
msgstr "Ewch i'r ddogfennaeth API."
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Go to {0}"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Go to the All view"
msgstr "Ewch i'r golwg Pawb"
#: src/pages/app/AboutPage.tsx
msgid "Go to the API documentation."
msgstr "Ewch i'r ddogfennaeth API."
#: src/pages/app/AboutPage.tsx
msgid "Goodies"
msgstr "nwyddau"
@@ -336,10 +383,6 @@ msgstr "Os nad yw'n wag, mynegiad sy'n gwerthuso i 'gwir' neu 'anghywir'. "
msgid "If you encounter an issue, please report it on the issues page of the GitHub project."
msgstr "Os byddwch yn dod ar draws mater, rhowch wybod amdano ar dudalen materion y prosiect GitHub."
#: src/pages/app/AboutPage.tsx
msgid "If you like this project, please consider a donation to support the developer and help cover the costs of keeping this website online."
msgstr "Os ydych chi'n hoffi'r prosiect hwn, ystyriwch rodd i gefnogi'r datblygwr a helpu i dalu costau cadw'r wefan hon ar-lein."
#: src/components/content/add/ImportOpml.tsx
msgid "Import"
msgstr "Mewnforio"
@@ -348,6 +391,7 @@ msgstr "Mewnforio"
msgid "In expanded view, scrolling through entries mark them as read"
msgstr "Mewn gwedd estynedig, mae sgrolio trwy gofnodion yn nodi eu bod wedi'u darllen"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Keep unread"
msgstr "Cadwch heb ei ddarllen"
@@ -397,6 +441,7 @@ msgstr "Wrthi'n llwytho tagiau..."
#: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx
#: src/pages/WelcomePage.tsx
msgid "Log in"
msgstr "Mewngofnodi"
@@ -404,6 +449,10 @@ msgstr "Mewngofnodi"
msgid "Logout"
msgstr "Allgofnodi"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Long press"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/admin/AdminUsersPage.tsx
msgid "Manage users"
@@ -418,10 +467,12 @@ msgstr "Marciwch y cyfan wedi'i ddarllen"
msgid "Mark all entries as read"
msgstr "Marciwch bob cofnod wedi'i ddarllen"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Mark as read"
msgstr "Marciwch ei fod wedi'i ddarllen"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Mark as read up to here"
msgstr "Marciwch fel y darllenwyd hyd yma"
@@ -430,6 +481,10 @@ msgstr "Marciwch fel y darllenwyd hyd yma"
msgid "Metrics"
msgstr "metrigau"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Middle click"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Move the page down"
msgstr "Symudwch y dudalen i lawr"
@@ -482,19 +537,6 @@ msgstr "Dim mwy o gofnodion"
msgid "Nothing found"
msgstr "Dim wedi'i ddarganfod"
#: src/pages/app/AddPage.tsx
msgid "OPML"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "OPML export"
msgstr "allforio OPML"
#: src/components/content/add/ImportOpml.tsx
#: src/components/content/add/ImportOpml.tsx
msgid "OPML file"
msgstr "ffeil OPML"
#: src/pages/app/AboutPage.tsx
msgid "Oldest first"
msgstr "Hynaf yn gyntaf"
@@ -503,6 +545,10 @@ msgstr "Hynaf yn gyntaf"
msgid "Oops!"
msgstr "Wps!"
#: src/components/header/Header.tsx
msgid "Open CommaFeed"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open current entry in a new tab"
msgstr "Agorwch y cofnod cyfredol mewn tab newydd"
@@ -515,6 +561,14 @@ msgstr "Agorwch y cofnod cyfredol mewn tab newydd yn y cefndir"
msgid "Open link"
msgstr "Dolen agored"
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Open link in new background tab"
msgstr ""
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Open link in new tab"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open next entry"
msgstr "Agor y cofnod nesaf"
@@ -527,6 +581,19 @@ msgstr "Agor cofnod blaenorol"
msgid "Open/close current entry"
msgstr "Agor / cau'r cofnod cyfredol"
#: src/pages/app/AddPage.tsx
msgid "OPML"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "OPML export"
msgstr "allforio OPML"
#: src/components/content/add/ImportOpml.tsx
#: src/components/content/add/ImportOpml.tsx
msgid "OPML file"
msgstr "ffeil OPML"
#: src/pages/app/AboutPage.tsx
msgid "Order"
msgstr "gorchymyn"
@@ -564,10 +631,6 @@ msgstr "Swydd"
msgid "Profile"
msgstr "Proffil"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/pages/auth/PasswordRecoveryPage.tsx
msgid "Recover password"
msgstr "Adfer cyfrinair"
@@ -581,7 +644,16 @@ msgstr "Adnewyddu"
msgid "Registrations are closed on this CommaFeed instance"
msgstr "Mae cofrestriadau ar gau ar yr achos CommaFeed hwn"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx
@@ -632,6 +704,14 @@ msgstr "Rhannu gwefannau"
msgid "Shift"
msgstr "shifft"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Show entry menu (desktop)"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Show entry menu (mobile)"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Show feeds and categories with no unread entries"
msgstr "Dangos ffrydiau a chategorïau heb unrhyw gofnodion heb eu darllen"
@@ -642,6 +722,7 @@ msgstr "Dangos cymorth llwybr byr bysellfwrdd"
#: src/pages/auth/RegistrationPage.tsx
#: src/pages/auth/RegistrationPage.tsx
#: src/pages/WelcomePage.tsx
msgid "Sign up"
msgstr "Cofrestrwch"
@@ -654,6 +735,7 @@ msgstr "Mae rhywbeth drwg newydd ddigwydd ..."
msgid "Space"
msgstr "Gofod"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Star"
msgstr "seren"
@@ -669,23 +751,29 @@ msgstr "serennog"
msgid "Subscribe"
msgstr "Tanysgrifio"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "Tanysgrifio URL"
#: src/components/content/add/Subscribe.tsx
msgid "Subscribe to the feed"
msgstr "Tanysgrifio i'r porthiant"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "Tanysgrifio URL"
#: src/components/Alert.tsx
msgid "Success"
msgstr "Llwyddiant"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Swipe header to the right"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to dark theme"
msgstr "Newid i thema dywyll"
#: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to light theme"
msgstr "Newid i thema golau"
@@ -709,10 +797,15 @@ msgstr "Toglo statws darllen y cofnod cyfredol"
msgid "Try out CommaFeed with the demo account: demo/demo"
msgstr "Rhowch gynnig ar CommaFeed gyda'r cyfrif demo: demo / demo"
#: src/pages/WelcomePage.tsx
msgid "Try the demo!"
msgstr ""
#: src/components/header/Header.tsx
msgid "Unread"
msgstr "Heb ei ddarllen"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Unstar"
msgstr "dad-seren"
@@ -722,15 +815,15 @@ msgstr "dad-seren"
msgid "Unsubscribe"
msgstr "Dad-danysgrifio"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Enw defnyddiwr"
#: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx
msgid "User Name or E-mail"
msgstr "Enw Defnyddiwr neu E-bost"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Enw defnyddiwr"
#: src/components/Alert.tsx
msgid "Warning"
msgstr "Rhybudd"
@@ -743,6 +836,6 @@ 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/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "mae angen y ffeil"
#: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh."
msgstr ""

View File

@@ -13,6 +13,14 @@ msgstr ""
"Language-Team: \n"
"Plural-Forms: \n"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "<0>CommaFeed is an open-source project. Sources are hosted on </0><1>GitHub</1>."
msgstr ""
#: src/pages/app/FeedDetailsPage.tsx
msgid "<0>Complete syntax is available </0><1>here</1>."
msgstr ""
@@ -21,14 +29,14 @@ msgstr ""
msgid "<0>Have an account?</0><1>Log in!</1>"
msgstr "<0>Har du en konto?</0><1>Log ind!</1>"
#: src/pages/app/DonatePage.tsx
msgid "<0>Hey,</0><1>I'm Jérémie from Belgium and I've been working on CommaFeed in my free time for over 10 years now. Thanks for taking an interest in helping me continue supporting CommaFeed.</1>"
msgstr ""
#: src/pages/auth/LoginPage.tsx
msgid "<0>Need an account?</0><1>Sign up!</1>"
msgstr "<0>Har du brug for en konto?</0><1>Tilmeld dig!</1>"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "API-nøgle"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/AboutPage.tsx
msgid "About"
@@ -75,6 +83,10 @@ msgstr "En opml-fil er en XML-fil, der indeholder feed-URL'er og kategorier. "
msgid "Analyze feed"
msgstr "Analyser foder"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "API-nøgle"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Are you sure you want to delete category <0>{categoryName}</0>?"
msgstr "Er du sikker på, at du vil slette kategori <0>{categoryName}</0>?"
@@ -123,6 +135,7 @@ msgstr "Browserudvidelser"
#: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx
@@ -150,10 +163,6 @@ msgstr "Ændring af adgangskode vil generere en ny API-nøgle"
msgid "Check that the feed is working"
msgstr "Tjek, at foderet virker"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>."
msgstr "CommaFeed er et open source-projekt. "
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item"
msgstr "CommaFeed næste ulæste element"
@@ -194,6 +203,18 @@ msgstr ""
msgid "Current password"
msgstr "Nuværende adgangskode"
#: src/pages/app/SettingsPage.tsx
msgid "Custom code"
msgstr ""
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom CSS rules that will be applied"
msgstr ""
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom JS code that will be executed on page load"
msgstr ""
#: src/pages/admin/AdminUsersPage.tsx
msgid "Date created"
msgstr "Dato oprettet"
@@ -202,15 +223,15 @@ msgstr "Dato oprettet"
msgid "Delete"
msgstr "Slet"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Slet kategori"
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
msgid "Delete account"
msgstr "Slet konto"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Slet kategori"
#: src/pages/admin/AdminUsersPage.tsx
msgid "Delete user"
msgstr "Slet bruger"
@@ -219,11 +240,20 @@ msgstr "Slet bruger"
msgid "Desc"
msgstr ""
#: src/components/header/ProfileMenu.tsx
msgid "Detailed"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/SettingsPage.tsx
msgid "Display"
msgstr "Skærm"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/DonatePage.tsx
msgid "Donate"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "Download"
msgstr ""
@@ -278,15 +308,28 @@ msgstr "Udvidet"
msgid "Export your subscriptions and categories as an OPML file that can be imported in other feed reading services"
msgstr "Eksporter dine abonnementer og kategorier som en OPML-fil, der kan importeres i andre feed-læsningstjenester"
#: src/components/header/Header.tsx
#: src/pages/WelcomePage.tsx
msgid "Extension options"
msgstr ""
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "Feednavn"
#: src/components/content/add/Subscribe.tsx
#: src/components/content/add/Subscribe.tsx
#: src/pages/app/FeedDetailsPage.tsx
msgid "Feed URL"
msgstr ""
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "Feednavn"
#: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now"
msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "fil er påkrævet"
#: src/pages/app/FeedDetailsPage.tsx
msgid "Filtering expression"
@@ -312,14 +355,18 @@ msgstr "Generer ny API-nøgle"
msgid "Generated feed url"
msgstr "Genereret feed-url"
#: src/pages/app/AboutPage.tsx
msgid "Go to the API documentation."
msgstr "Gå til API-dokumentationen."
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Go to {0}"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Go to the All view"
msgstr "Gå til visningen Alle"
#: src/pages/app/AboutPage.tsx
msgid "Go to the API documentation."
msgstr "Gå til API-dokumentationen."
#: src/pages/app/AboutPage.tsx
msgid "Goodies"
msgstr "Godbidder"
@@ -336,10 +383,6 @@ msgstr "Hvis det ikke er tomt, et udtryk, der vurderes til 'sand' eller 'falsk'.
msgid "If you encounter an issue, please report it on the issues page of the GitHub project."
msgstr "Hvis du støder på et problem, bedes du rapportere det på problemsiden for GitHub-projektet."
#: src/pages/app/AboutPage.tsx
msgid "If you like this project, please consider a donation to support the developer and help cover the costs of keeping this website online."
msgstr "Hvis du kan lide dette projekt, bedes du overveje en donation for at støtte udvikleren og hjælpe med at dække omkostningerne ved at holde denne hjemmeside online."
#: src/components/content/add/ImportOpml.tsx
msgid "Import"
msgstr ""
@@ -348,6 +391,7 @@ msgstr ""
msgid "In expanded view, scrolling through entries mark them as read"
msgstr "I udvidet visning markerer du dem som læst, når du ruller gennem poster"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Keep unread"
msgstr "Forbehold ulæst"
@@ -397,6 +441,7 @@ msgstr "Indlæser tags..."
#: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx
#: src/pages/WelcomePage.tsx
msgid "Log in"
msgstr "Log ind"
@@ -404,6 +449,10 @@ msgstr "Log ind"
msgid "Logout"
msgstr "Log ud"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Long press"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/admin/AdminUsersPage.tsx
msgid "Manage users"
@@ -418,10 +467,12 @@ msgstr "Marker alle som læst"
msgid "Mark all entries as read"
msgstr "Marker alle poster som læst"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Mark as read"
msgstr "Markér som læst"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Mark as read up to here"
msgstr "Markér som læst indtil her"
@@ -430,6 +481,10 @@ msgstr "Markér som læst indtil her"
msgid "Metrics"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Middle click"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Move the page down"
msgstr "Flyt siden ned"
@@ -482,19 +537,6 @@ msgstr "Ingen flere poster"
msgid "Nothing found"
msgstr "Intet fundet"
#: src/pages/app/AddPage.tsx
msgid "OPML"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "OPML export"
msgstr "OPML eksport"
#: src/components/content/add/ImportOpml.tsx
#: src/components/content/add/ImportOpml.tsx
msgid "OPML file"
msgstr "OPML fil"
#: src/pages/app/AboutPage.tsx
msgid "Oldest first"
msgstr "Ældst først"
@@ -503,6 +545,10 @@ msgstr "Ældst først"
msgid "Oops!"
msgstr "Hovsa!"
#: src/components/header/Header.tsx
msgid "Open CommaFeed"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open current entry in a new tab"
msgstr "Åbn den aktuelle post i en ny fane"
@@ -515,6 +561,14 @@ msgstr "Åbn den aktuelle post i en ny fane i baggrunden"
msgid "Open link"
msgstr "Åbent link"
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Open link in new background tab"
msgstr ""
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Open link in new tab"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open next entry"
msgstr "Åbn næste post"
@@ -527,6 +581,19 @@ msgstr "Åbn forrige post"
msgid "Open/close current entry"
msgstr "Åbn/luk aktuel indgang"
#: src/pages/app/AddPage.tsx
msgid "OPML"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "OPML export"
msgstr "OPML eksport"
#: src/components/content/add/ImportOpml.tsx
#: src/components/content/add/ImportOpml.tsx
msgid "OPML file"
msgstr "OPML fil"
#: src/pages/app/AboutPage.tsx
msgid "Order"
msgstr "Bestilling"
@@ -564,10 +631,6 @@ msgstr ""
msgid "Profile"
msgstr "Profil"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/pages/auth/PasswordRecoveryPage.tsx
msgid "Recover password"
msgstr "Gendan adgangskode"
@@ -581,7 +644,16 @@ msgstr "Opdater"
msgid "Registrations are closed on this CommaFeed instance"
msgstr "Registreringer er lukket på denne CommaFeed-instans"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx
@@ -632,6 +704,14 @@ msgstr "Delingssider"
msgid "Shift"
msgstr "Skift"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Show entry menu (desktop)"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Show entry menu (mobile)"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Show feeds and categories with no unread entries"
msgstr "Vis feeds og kategorier uden ulæste poster"
@@ -642,6 +722,7 @@ msgstr "Vis hjælp til tastaturgenveje"
#: src/pages/auth/RegistrationPage.tsx
#: src/pages/auth/RegistrationPage.tsx
#: src/pages/WelcomePage.tsx
msgid "Sign up"
msgstr "Tilmeld dig"
@@ -654,6 +735,7 @@ msgstr "Der er lige sket noget slemt..."
msgid "Space"
msgstr "Rum"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Star"
msgstr "Stjerne"
@@ -669,23 +751,29 @@ msgstr "Medvirkende"
msgid "Subscribe"
msgstr "Tilmeld"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr ""
#: src/components/content/add/Subscribe.tsx
msgid "Subscribe to the feed"
msgstr "Abonner på feedet"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr ""
#: src/components/Alert.tsx
msgid "Success"
msgstr "Succes"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Swipe header to the right"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to dark theme"
msgstr "Skift til mørkt tema"
#: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to light theme"
msgstr "Skift til lystema"
@@ -709,10 +797,15 @@ msgstr "Skift læsestatus for den aktuelle post"
msgid "Try out CommaFeed with the demo account: demo/demo"
msgstr "Prøv CommaFeed med demokontoen: demo/demo"
#: src/pages/WelcomePage.tsx
msgid "Try the demo!"
msgstr ""
#: src/components/header/Header.tsx
msgid "Unread"
msgstr "Ulæst"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Unstar"
msgstr ""
@@ -722,15 +815,15 @@ msgstr ""
msgid "Unsubscribe"
msgstr "Afmeld"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Brugernavn"
#: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx
msgid "User Name or E-mail"
msgstr "Brugernavn eller e-mail"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Brugernavn"
#: src/components/Alert.tsx
msgid "Warning"
msgstr "Advarsel"
@@ -743,6 +836,6 @@ 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/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "fil er påkrævet"
#: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh."
msgstr ""

View File

@@ -13,6 +13,14 @@ msgstr ""
"Language-Team: \n"
"Plural-Forms: \n"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "<0>CommaFeed is an open-source project. Sources are hosted on </0><1>GitHub</1>."
msgstr ""
#: src/pages/app/FeedDetailsPage.tsx
msgid "<0>Complete syntax is available </0><1>here</1>."
msgstr ""
@@ -21,14 +29,14 @@ msgstr ""
msgid "<0>Have an account?</0><1>Log in!</1>"
msgstr "<0>Haben Sie ein Konto?</0><1>Melden Sie sich an!</1>"
#: src/pages/app/DonatePage.tsx
msgid "<0>Hey,</0><1>I'm Jérémie from Belgium and I've been working on CommaFeed in my free time for over 10 years now. Thanks for taking an interest in helping me continue supporting CommaFeed.</1>"
msgstr ""
#: src/pages/auth/LoginPage.tsx
msgid "<0>Need an account?</0><1>Sign up!</1>"
msgstr "<0>Benötigen Sie ein Konto?</0><1>Melden Sie sich an!</1>"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "API-Schlüssel"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/AboutPage.tsx
msgid "About"
@@ -75,6 +83,10 @@ msgstr "Eine opml-Datei ist eine XML-Datei, die Feed-URLs und Kategorien enthäl
msgid "Analyze feed"
msgstr "Feed analysieren"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "API-Schlüssel"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Are you sure you want to delete category <0>{categoryName}</0>?"
msgstr "Sind Sie sicher, dass Sie die Kategorie <0>{categoryName}</0> löschen möchten?"
@@ -123,6 +135,7 @@ msgstr "Browsererweiterungen"
#: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx
@@ -150,10 +163,6 @@ msgstr "Das Ändern des Passworts generiert einen neuen API-Schlüssel"
msgid "Check that the feed is working"
msgstr "Überprüfen Sie, ob der Feed funktioniert"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>."
msgstr "CommaFeed ist ein Open-Source-Projekt. "
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item"
msgstr "CommaFeed nächstes ungelesenes Element"
@@ -194,6 +203,18 @@ msgstr "Strg"
msgid "Current password"
msgstr "Aktuelles Passwort"
#: src/pages/app/SettingsPage.tsx
msgid "Custom code"
msgstr ""
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom CSS rules that will be applied"
msgstr ""
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom JS code that will be executed on page load"
msgstr ""
#: src/pages/admin/AdminUsersPage.tsx
msgid "Date created"
msgstr "Erstellungsdatum"
@@ -202,15 +223,15 @@ msgstr "Erstellungsdatum"
msgid "Delete"
msgstr "Löschen"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Kategorie löschen"
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
msgid "Delete account"
msgstr "Konto löschen"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Kategorie löschen"
#: src/pages/admin/AdminUsersPage.tsx
msgid "Delete user"
msgstr "Benutzer löschen"
@@ -219,11 +240,20 @@ msgstr "Benutzer löschen"
msgid "Desc"
msgstr "Beschr"
#: src/components/header/ProfileMenu.tsx
msgid "Detailed"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/SettingsPage.tsx
msgid "Display"
msgstr "Anzeige"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/DonatePage.tsx
msgid "Donate"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "Download"
msgstr "Herunterladen"
@@ -278,15 +308,28 @@ msgstr "Erweitert"
msgid "Export your subscriptions and categories as an OPML file that can be imported in other feed reading services"
msgstr "Exportieren Sie Ihre Abonnements und Kategorien als OPML-Datei, die in andere Feed-Lesedienste importiert werden kann"
#: src/components/header/Header.tsx
#: src/pages/WelcomePage.tsx
msgid "Extension options"
msgstr ""
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "Feedname"
#: src/components/content/add/Subscribe.tsx
#: src/components/content/add/Subscribe.tsx
#: src/pages/app/FeedDetailsPage.tsx
msgid "Feed URL"
msgstr "Feed-URL"
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "Feedname"
#: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now"
msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "Datei ist erforderlich"
#: src/pages/app/FeedDetailsPage.tsx
msgid "Filtering expression"
@@ -312,14 +355,18 @@ msgstr "Neuen API-Schlüssel generieren"
msgid "Generated feed url"
msgstr "Generierte Feed-URL"
#: src/pages/app/AboutPage.tsx
msgid "Go to the API documentation."
msgstr "Gehen Sie zur API-Dokumentation."
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Go to {0}"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Go to the All view"
msgstr "Zur Ansicht Alle wechseln"
#: src/pages/app/AboutPage.tsx
msgid "Go to the API documentation."
msgstr "Gehen Sie zur API-Dokumentation."
#: src/pages/app/AboutPage.tsx
msgid "Goodies"
msgstr "Gutes"
@@ -336,10 +383,6 @@ msgstr "Wenn nicht leer, ein Ausdruck, der als „wahr“ oder „falsch“ ausg
msgid "If you encounter an issue, please report it on the issues page of the GitHub project."
msgstr "Wenn Sie auf ein Problem stoßen, melden Sie es bitte auf der Problemseite des GitHub-Projekts."
#: src/pages/app/AboutPage.tsx
msgid "If you like this project, please consider a donation to support the developer and help cover the costs of keeping this website online."
msgstr "Wenn Ihnen dieses Projekt gefällt, denken Sie bitte über eine Spende nach, um den Entwickler zu unterstützen und die Kosten für die Onlinehaltung dieser Website zu decken."
#: src/components/content/add/ImportOpml.tsx
msgid "Import"
msgstr "Importieren"
@@ -348,6 +391,7 @@ msgstr "Importieren"
msgid "In expanded view, scrolling through entries mark them as read"
msgstr "In der erweiterten Ansicht werden Einträge beim Scrollen als gelesen markiert"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Keep unread"
msgstr "Ungelesen lassen"
@@ -397,6 +441,7 @@ msgstr "Tags werden geladen..."
#: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx
#: src/pages/WelcomePage.tsx
msgid "Log in"
msgstr "Einloggen"
@@ -404,6 +449,10 @@ msgstr "Einloggen"
msgid "Logout"
msgstr "Abmelden"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Long press"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/admin/AdminUsersPage.tsx
msgid "Manage users"
@@ -418,10 +467,12 @@ msgstr "Alle als gelesen markieren"
msgid "Mark all entries as read"
msgstr "Alle Einträge als gelesen markieren"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Mark as read"
msgstr "Als gelesen markieren"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Mark as read up to here"
msgstr "Bis hierhin als gelesen markieren"
@@ -430,6 +481,10 @@ msgstr "Bis hierhin als gelesen markieren"
msgid "Metrics"
msgstr "Metriken"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Middle click"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Move the page down"
msgstr "Seite nach unten verschieben"
@@ -482,19 +537,6 @@ msgstr "Keine weiteren Einträge"
msgid "Nothing found"
msgstr "Nichts gefunden"
#: src/pages/app/AddPage.tsx
msgid "OPML"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "OPML export"
msgstr "OPML-Export"
#: src/components/content/add/ImportOpml.tsx
#: src/components/content/add/ImportOpml.tsx
msgid "OPML file"
msgstr "OPML-Datei"
#: src/pages/app/AboutPage.tsx
msgid "Oldest first"
msgstr "Älteste zuerst"
@@ -503,6 +545,10 @@ msgstr "Älteste zuerst"
msgid "Oops!"
msgstr "Ups!"
#: src/components/header/Header.tsx
msgid "Open CommaFeed"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open current entry in a new tab"
msgstr "Aktuellen Eintrag in neuem Tab öffnen"
@@ -515,6 +561,14 @@ msgstr "Aktuellen Eintrag in neuem Tab im Hintergrund öffnen"
msgid "Open link"
msgstr "Link öffnen"
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Open link in new background tab"
msgstr ""
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Open link in new tab"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open next entry"
msgstr "Nächsten Eintrag öffnen"
@@ -527,6 +581,19 @@ msgstr "Vorherigen Eintrag öffnen"
msgid "Open/close current entry"
msgstr "Aktuellen Eintrag öffnen/schließen"
#: src/pages/app/AddPage.tsx
msgid "OPML"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "OPML export"
msgstr "OPML-Export"
#: src/components/content/add/ImportOpml.tsx
#: src/components/content/add/ImportOpml.tsx
msgid "OPML file"
msgstr "OPML-Datei"
#: src/pages/app/AboutPage.tsx
msgid "Order"
msgstr "Bestellung"
@@ -564,10 +631,6 @@ msgstr "Stellung"
msgid "Profile"
msgstr "Profil"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr "REST-API"
#: src/pages/auth/PasswordRecoveryPage.tsx
msgid "Recover password"
msgstr "Kennwort wiederherstellen"
@@ -581,7 +644,16 @@ msgstr "Aktualisieren"
msgid "Registrations are closed on this CommaFeed instance"
msgstr "Registrierungen sind für diese CommaFeed-Instanz geschlossen"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr "REST-API"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx
@@ -632,6 +704,14 @@ msgstr "Seiten teilen"
msgid "Shift"
msgstr "Verschiebung"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Show entry menu (desktop)"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Show entry menu (mobile)"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Show feeds and categories with no unread entries"
msgstr "Feeds und Kategorien ohne ungelesene Einträge anzeigen"
@@ -642,6 +722,7 @@ msgstr "Tastenkürzel-Hilfe anzeigen"
#: src/pages/auth/RegistrationPage.tsx
#: src/pages/auth/RegistrationPage.tsx
#: src/pages/WelcomePage.tsx
msgid "Sign up"
msgstr "Melden Sie sich an"
@@ -654,6 +735,7 @@ msgstr "Etwas Schlimmes ist gerade passiert..."
msgid "Space"
msgstr "Raum"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Star"
msgstr "Stern"
@@ -669,23 +751,29 @@ msgstr "Markiert"
msgid "Subscribe"
msgstr "Abonnieren"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "URL abonnieren"
#: src/components/content/add/Subscribe.tsx
msgid "Subscribe to the feed"
msgstr "Feed abonnieren"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "URL abonnieren"
#: src/components/Alert.tsx
msgid "Success"
msgstr "Erfolg"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Swipe header to the right"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to dark theme"
msgstr "Zum dunklen Design wechseln"
#: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to light theme"
msgstr "Wechseln Sie zum Lichtdesign"
@@ -709,10 +797,15 @@ msgstr "Lesestatus des aktuellen Eintrags umschalten"
msgid "Try out CommaFeed with the demo account: demo/demo"
msgstr "Testen Sie CommaFeed mit dem Demokonto: demo/demo"
#: src/pages/WelcomePage.tsx
msgid "Try the demo!"
msgstr ""
#: src/components/header/Header.tsx
msgid "Unread"
msgstr "Ungelesen"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Unstar"
msgstr "Stern entfernen"
@@ -722,15 +815,15 @@ msgstr "Stern entfernen"
msgid "Unsubscribe"
msgstr "Abbestellen"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Benutzername"
#: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx
msgid "User Name or E-mail"
msgstr "Benutzername oder E-Mail"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Benutzername"
#: src/components/Alert.tsx
msgid "Warning"
msgstr "Warnung"
@@ -743,6 +836,6 @@ 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/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "Datei ist erforderlich"
#: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh."
msgstr ""

View File

@@ -13,6 +13,14 @@ msgstr ""
"Language-Team: \n"
"Plural-Forms: \n"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr "{0} (in {1})"
#: src/pages/app/AboutPage.tsx
msgid "<0>CommaFeed is an open-source project. Sources are hosted on </0><1>GitHub</1>."
msgstr "<0>CommaFeed is an open-source project. Sources are hosted on </0><1>GitHub</1>."
#: src/pages/app/FeedDetailsPage.tsx
msgid "<0>Complete syntax is available </0><1>here</1>."
msgstr "<0>Complete syntax is available </0><1>here</1>."
@@ -21,14 +29,14 @@ msgstr "<0>Complete syntax is available </0><1>here</1>."
msgid "<0>Have an account?</0><1>Log in!</1>"
msgstr "<0>Have an account?</0><1>Log in!</1>"
#: src/pages/app/DonatePage.tsx
msgid "<0>Hey,</0><1>I'm Jérémie from Belgium and I've been working on CommaFeed in my free time for over 10 years now. Thanks for taking an interest in helping me continue supporting CommaFeed.</1>"
msgstr "<0>Hey,</0><1>I'm Jérémie from Belgium and I've been working on CommaFeed in my free time for over 10 years now. Thanks for taking an interest in helping me continue supporting CommaFeed.</1>"
#: src/pages/auth/LoginPage.tsx
msgid "<0>Need an account?</0><1>Sign up!</1>"
msgstr "<0>Need an account?</0><1>Sign up!</1>"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "API key"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/AboutPage.tsx
msgid "About"
@@ -75,6 +83,10 @@ msgstr "An opml file is an XML file containing feed URLs and categories. You can
msgid "Analyze feed"
msgstr "Analyze feed"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "API key"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Are you sure you want to delete category <0>{categoryName}</0>?"
msgstr "Are you sure you want to delete category <0>{categoryName}</0>?"
@@ -123,6 +135,7 @@ msgstr "Browser extentions"
#: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx
@@ -150,10 +163,6 @@ msgstr "Changing password will generate a new API key"
msgid "Check that the feed is working"
msgstr "Check that the feed is working"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>."
msgstr "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>."
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item"
msgstr "CommaFeed next unread item"
@@ -194,6 +203,18 @@ msgstr "Ctrl"
msgid "Current password"
msgstr "Current password"
#: src/pages/app/SettingsPage.tsx
msgid "Custom code"
msgstr "Custom code"
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom CSS rules that will be applied"
msgstr "Custom CSS rules that will be applied"
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom JS code that will be executed on page load"
msgstr "Custom JS code that will be executed on page load"
#: src/pages/admin/AdminUsersPage.tsx
msgid "Date created"
msgstr "Date created"
@@ -202,15 +223,15 @@ msgstr "Date created"
msgid "Delete"
msgstr "Delete"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Delete Category"
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
msgid "Delete account"
msgstr "Delete account"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Delete Category"
#: src/pages/admin/AdminUsersPage.tsx
msgid "Delete user"
msgstr "Delete user"
@@ -219,11 +240,20 @@ msgstr "Delete user"
msgid "Desc"
msgstr "Desc"
#: src/components/header/ProfileMenu.tsx
msgid "Detailed"
msgstr "Detailed"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/SettingsPage.tsx
msgid "Display"
msgstr "Display"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/DonatePage.tsx
msgid "Donate"
msgstr "Donate"
#: src/components/settings/ProfileSettings.tsx
msgid "Download"
msgstr "Download"
@@ -278,15 +308,28 @@ msgstr "Expanded"
msgid "Export your subscriptions and categories as an OPML file that can be imported in other feed reading services"
msgstr "Export your subscriptions and categories as an OPML file that can be imported in other feed reading services"
#: src/components/header/Header.tsx
#: src/pages/WelcomePage.tsx
msgid "Extension options"
msgstr "Extension options"
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "Feed name"
#: src/components/content/add/Subscribe.tsx
#: src/components/content/add/Subscribe.tsx
#: src/pages/app/FeedDetailsPage.tsx
msgid "Feed URL"
msgstr "Feed URL"
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "Feed name"
#: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now"
msgstr "Fetch all my feeds now"
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "file is required"
#: src/pages/app/FeedDetailsPage.tsx
msgid "Filtering expression"
@@ -312,14 +355,18 @@ msgstr "Generate new API key"
msgid "Generated feed url"
msgstr "Generated feed url"
#: src/pages/app/AboutPage.tsx
msgid "Go to the API documentation."
msgstr "Go to the API documentation."
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Go to {0}"
msgstr "Go to {0}"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Go to the All view"
msgstr "Go to the All view"
#: src/pages/app/AboutPage.tsx
msgid "Go to the API documentation."
msgstr "Go to the API documentation."
#: src/pages/app/AboutPage.tsx
msgid "Goodies"
msgstr "Goodies"
@@ -336,10 +383,6 @@ msgstr "If not empty, an expression evaluating to 'true' or 'false'. If false, n
msgid "If you encounter an issue, please report it on the issues page of the GitHub project."
msgstr "If you encounter an issue, please report it on the issues page of the GitHub project."
#: src/pages/app/AboutPage.tsx
msgid "If you like this project, please consider a donation to support the developer and help cover the costs of keeping this website online."
msgstr "If you like this project, please consider a donation to support the developer and help cover the costs of keeping this website online."
#: src/components/content/add/ImportOpml.tsx
msgid "Import"
msgstr "Import"
@@ -348,6 +391,7 @@ msgstr "Import"
msgid "In expanded view, scrolling through entries mark them as read"
msgstr "In expanded view, scrolling through entries mark them as read"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Keep unread"
msgstr "Keep unread"
@@ -397,6 +441,7 @@ msgstr "Loading tags..."
#: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx
#: src/pages/WelcomePage.tsx
msgid "Log in"
msgstr "Log in"
@@ -404,6 +449,10 @@ msgstr "Log in"
msgid "Logout"
msgstr "Logout"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Long press"
msgstr "Long press"
#: src/components/header/ProfileMenu.tsx
#: src/pages/admin/AdminUsersPage.tsx
msgid "Manage users"
@@ -418,10 +467,12 @@ msgstr "Mark all as read"
msgid "Mark all entries as read"
msgstr "Mark all entries as read"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Mark as read"
msgstr "Mark as read"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Mark as read up to here"
msgstr "Mark as read up to here"
@@ -430,6 +481,10 @@ msgstr "Mark as read up to here"
msgid "Metrics"
msgstr "Metrics"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Middle click"
msgstr "Middle click"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Move the page down"
msgstr "Move the page down"
@@ -482,19 +537,6 @@ msgstr "No more entries"
msgid "Nothing found"
msgstr "Nothing found"
#: src/pages/app/AddPage.tsx
msgid "OPML"
msgstr "OPML"
#: src/components/settings/ProfileSettings.tsx
msgid "OPML export"
msgstr "OPML export"
#: src/components/content/add/ImportOpml.tsx
#: src/components/content/add/ImportOpml.tsx
msgid "OPML file"
msgstr "OPML file"
#: src/pages/app/AboutPage.tsx
msgid "Oldest first"
msgstr "Oldest first"
@@ -503,6 +545,10 @@ msgstr "Oldest first"
msgid "Oops!"
msgstr "Oops!"
#: src/components/header/Header.tsx
msgid "Open CommaFeed"
msgstr "Open CommaFeed"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open current entry in a new tab"
msgstr "Open current entry in a new tab"
@@ -515,6 +561,14 @@ msgstr "Open current entry in a new tab in the background"
msgid "Open link"
msgstr "Open link"
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Open link in new background tab"
msgstr "Open link in new background tab"
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Open link in new tab"
msgstr "Open link in new tab"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open next entry"
msgstr "Open next entry"
@@ -527,6 +581,19 @@ msgstr "Open previous entry"
msgid "Open/close current entry"
msgstr "Open/close current entry"
#: src/pages/app/AddPage.tsx
msgid "OPML"
msgstr "OPML"
#: src/components/settings/ProfileSettings.tsx
msgid "OPML export"
msgstr "OPML export"
#: src/components/content/add/ImportOpml.tsx
#: src/components/content/add/ImportOpml.tsx
msgid "OPML file"
msgstr "OPML file"
#: src/pages/app/AboutPage.tsx
msgid "Order"
msgstr "Order"
@@ -564,10 +631,6 @@ msgstr "Position"
msgid "Profile"
msgstr "Profile"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr "REST API"
#: src/pages/auth/PasswordRecoveryPage.tsx
msgid "Recover password"
msgstr "Recover password"
@@ -581,7 +644,16 @@ msgstr "Refresh"
msgid "Registrations are closed on this CommaFeed instance"
msgstr "Registrations are closed on this CommaFeed instance"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr "REST API"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click"
msgstr "Right click"
#: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx
@@ -632,6 +704,14 @@ msgstr "Sharing sites"
msgid "Shift"
msgstr "Shift"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Show entry menu (desktop)"
msgstr "Show entry menu (desktop)"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Show entry menu (mobile)"
msgstr "Show entry menu (mobile)"
#: src/components/settings/DisplaySettings.tsx
msgid "Show feeds and categories with no unread entries"
msgstr "Show feeds and categories with no unread entries"
@@ -642,6 +722,7 @@ msgstr "Show keyboard shortcut help"
#: src/pages/auth/RegistrationPage.tsx
#: src/pages/auth/RegistrationPage.tsx
#: src/pages/WelcomePage.tsx
msgid "Sign up"
msgstr "Sign up"
@@ -654,6 +735,7 @@ msgstr "Something bad just happened..."
msgid "Space"
msgstr "Space"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Star"
msgstr "Star"
@@ -669,23 +751,29 @@ msgstr "Starred"
msgid "Subscribe"
msgstr "Subscribe"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "Subscribe URL"
#: src/components/content/add/Subscribe.tsx
msgid "Subscribe to the feed"
msgstr "Subscribe to the feed"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "Subscribe URL"
#: src/components/Alert.tsx
msgid "Success"
msgstr "Success"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Swipe header to the right"
msgstr "Swipe header to the right"
#: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to dark theme"
msgstr "Switch to dark theme"
#: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to light theme"
msgstr "Switch to light theme"
@@ -709,10 +797,15 @@ msgstr "Toggle read status of current entry"
msgid "Try out CommaFeed with the demo account: demo/demo"
msgstr "Try out CommaFeed with the demo account: demo/demo"
#: src/pages/WelcomePage.tsx
msgid "Try the demo!"
msgstr "Try the demo!"
#: src/components/header/Header.tsx
msgid "Unread"
msgstr "Unread"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Unstar"
msgstr "Unstar"
@@ -722,15 +815,15 @@ msgstr "Unstar"
msgid "Unsubscribe"
msgstr "Unsubscribe"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "User name"
#: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx
msgid "User Name or E-mail"
msgstr "User Name or E-mail"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "User name"
#: src/components/Alert.tsx
msgid "Warning"
msgstr "Warning"
@@ -743,6 +836,6 @@ 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/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "file is required"
#: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh."
msgstr "Your feeds have been queued for refresh."

View File

@@ -13,6 +13,14 @@ msgstr ""
"Language-Team: \n"
"Plural-Forms: \n"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "<0>CommaFeed is an open-source project. Sources are hosted on </0><1>GitHub</1>."
msgstr ""
#: src/pages/app/FeedDetailsPage.tsx
msgid "<0>Complete syntax is available </0><1>here</1>."
msgstr ""
@@ -21,14 +29,14 @@ msgstr ""
msgid "<0>Have an account?</0><1>Log in!</1>"
msgstr "<0>¿Tienes una cuenta?</0><1>¡Inicia sesión!</1>"
#: src/pages/app/DonatePage.tsx
msgid "<0>Hey,</0><1>I'm Jérémie from Belgium and I've been working on CommaFeed in my free time for over 10 years now. Thanks for taking an interest in helping me continue supporting CommaFeed.</1>"
msgstr ""
#: src/pages/auth/LoginPage.tsx
msgid "<0>Need an account?</0><1>Sign up!</1>"
msgstr "<0>¿Necesitas una cuenta?</0><1>¡Regístrate!</1>"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "clave API"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/AboutPage.tsx
msgid "About"
@@ -75,6 +83,10 @@ msgstr "Un archivo opml es un archivo XML que contiene categorías y direcciones
msgid "Analyze feed"
msgstr "Analizar alimentación"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "clave API"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Are you sure you want to delete category <0>{categoryName}</0>?"
msgstr "¿Está seguro de que desea eliminar la categoría <0>{categoryName}</0>?"
@@ -123,6 +135,7 @@ msgstr "Extensiones del navegador"
#: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx
@@ -150,10 +163,6 @@ msgstr "Cambiar la contraseña generará una nueva clave API"
msgid "Check that the feed is working"
msgstr "Compruebe que el feed funciona"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>."
msgstr "CommaFeed es un proyecto de código abierto. "
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item"
msgstr "CommaFeed siguiente elemento no leído"
@@ -194,6 +203,18 @@ msgstr ""
msgid "Current password"
msgstr "Contraseña actual"
#: src/pages/app/SettingsPage.tsx
msgid "Custom code"
msgstr ""
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom CSS rules that will be applied"
msgstr ""
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom JS code that will be executed on page load"
msgstr ""
#: src/pages/admin/AdminUsersPage.tsx
msgid "Date created"
msgstr "Fecha de creación"
@@ -202,15 +223,15 @@ msgstr "Fecha de creación"
msgid "Delete"
msgstr "Borrar"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Borrar categoría"
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
msgid "Delete account"
msgstr "Borrar cuenta"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Borrar categoría"
#: src/pages/admin/AdminUsersPage.tsx
msgid "Delete user"
msgstr "Borrar usuario"
@@ -219,11 +240,20 @@ msgstr "Borrar usuario"
msgid "Desc"
msgstr ""
#: src/components/header/ProfileMenu.tsx
msgid "Detailed"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/SettingsPage.tsx
msgid "Display"
msgstr "Pantalla"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/DonatePage.tsx
msgid "Donate"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "Download"
msgstr "descargar"
@@ -278,15 +308,28 @@ msgstr "Expandido"
msgid "Export your subscriptions and categories as an OPML file that can be imported in other feed reading services"
msgstr "Exporte sus suscripciones y categorías como un archivo OPML que se puede importar en otros servicios de lectura de feeds"
#: src/components/header/Header.tsx
#: src/pages/WelcomePage.tsx
msgid "Extension options"
msgstr ""
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "Nombre de alimentación"
#: src/components/content/add/Subscribe.tsx
#: src/components/content/add/Subscribe.tsx
#: src/pages/app/FeedDetailsPage.tsx
msgid "Feed URL"
msgstr "URL de fuente"
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "Nombre de alimentación"
#: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now"
msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "archivo requerido"
#: src/pages/app/FeedDetailsPage.tsx
msgid "Filtering expression"
@@ -312,14 +355,18 @@ msgstr "Generar nueva clave API"
msgid "Generated feed url"
msgstr "URL del feed generado"
#: src/pages/app/AboutPage.tsx
msgid "Go to the API documentation."
msgstr "Ir a la documentación de la API."
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Go to {0}"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Go to the All view"
msgstr "Ir a la vista Todo"
#: src/pages/app/AboutPage.tsx
msgid "Go to the API documentation."
msgstr "Ir a la documentación de la API."
#: src/pages/app/AboutPage.tsx
msgid "Goodies"
msgstr "golosinas"
@@ -336,10 +383,6 @@ msgstr "Si no está vacío, una expresión que se evalúa como 'verdadero' o 'fa
msgid "If you encounter an issue, please report it on the issues page of the GitHub project."
msgstr "Si encuentra un problema, infórmelo en la página de problemas del proyecto GitHub."
#: src/pages/app/AboutPage.tsx
msgid "If you like this project, please consider a donation to support the developer and help cover the costs of keeping this website online."
msgstr "Si le gusta este proyecto, considere una donación para apoyar al desarrollador y ayudar a cubrir los costos de mantener este sitio web en línea."
#: src/components/content/add/ImportOpml.tsx
msgid "Import"
msgstr "Importar"
@@ -348,6 +391,7 @@ msgstr "Importar"
msgid "In expanded view, scrolling through entries mark them as read"
msgstr "En la vista ampliada, al desplazarse por las entradas, márquelas como leídas"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Keep unread"
msgstr "Mantener sin leer"
@@ -397,6 +441,7 @@ msgstr "Cargando etiquetas..."
#: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx
#: src/pages/WelcomePage.tsx
msgid "Log in"
msgstr "Iniciar sesión"
@@ -404,6 +449,10 @@ msgstr "Iniciar sesión"
msgid "Logout"
msgstr "Salir"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Long press"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/admin/AdminUsersPage.tsx
msgid "Manage users"
@@ -418,10 +467,12 @@ msgstr "Marcar todo como leído"
msgid "Mark all entries as read"
msgstr "Marcar todas las entradas como leídas"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Mark as read"
msgstr "Marcar como leído"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Mark as read up to here"
msgstr "Marcar como leído hasta aquí"
@@ -430,6 +481,10 @@ msgstr "Marcar como leído hasta aquí"
msgid "Metrics"
msgstr "Métricas"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Middle click"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Move the page down"
msgstr "Mover la página hacia abajo"
@@ -482,19 +537,6 @@ msgstr "No más entradas"
msgid "Nothing found"
msgstr "Nada encontrado"
#: src/pages/app/AddPage.tsx
msgid "OPML"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "OPML export"
msgstr "Exportación OPML"
#: src/components/content/add/ImportOpml.tsx
#: src/components/content/add/ImportOpml.tsx
msgid "OPML file"
msgstr "archivo OPML"
#: src/pages/app/AboutPage.tsx
msgid "Oldest first"
msgstr "más antigua primero"
@@ -503,6 +545,10 @@ msgstr "más antigua primero"
msgid "Oops!"
msgstr "¡Ups!"
#: src/components/header/Header.tsx
msgid "Open CommaFeed"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open current entry in a new tab"
msgstr "Abrir la entrada actual en una nueva pestaña"
@@ -515,6 +561,14 @@ msgstr "Abrir la entrada actual en una nueva pestaña en segundo plano"
msgid "Open link"
msgstr "Abrir enlace"
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Open link in new background tab"
msgstr ""
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Open link in new tab"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open next entry"
msgstr "Abrir siguiente entrada"
@@ -527,6 +581,19 @@ msgstr "Abrir entrada anterior"
msgid "Open/close current entry"
msgstr "Abrir/cerrar entrada actual"
#: src/pages/app/AddPage.tsx
msgid "OPML"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "OPML export"
msgstr "Exportación OPML"
#: src/components/content/add/ImportOpml.tsx
#: src/components/content/add/ImportOpml.tsx
msgid "OPML file"
msgstr "archivo OPML"
#: src/pages/app/AboutPage.tsx
msgid "Order"
msgstr "Orden"
@@ -564,10 +631,6 @@ msgstr "Posición"
msgid "Profile"
msgstr "Perfil"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr "API REST"
#: src/pages/auth/PasswordRecoveryPage.tsx
msgid "Recover password"
msgstr "Recuperar contraseña"
@@ -581,7 +644,16 @@ msgstr "Actualizar"
msgid "Registrations are closed on this CommaFeed instance"
msgstr "Los registros están cerrados en esta instancia de CommaFeed"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr "API REST"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx
@@ -632,6 +704,14 @@ msgstr "Compartir sitios"
msgid "Shift"
msgstr "Cambio"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Show entry menu (desktop)"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Show entry menu (mobile)"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Show feeds and categories with no unread entries"
msgstr "Mostrar feeds y categorías sin entradas no leídas"
@@ -642,6 +722,7 @@ msgstr "Mostrar ayuda de atajo de teclado"
#: src/pages/auth/RegistrationPage.tsx
#: src/pages/auth/RegistrationPage.tsx
#: src/pages/WelcomePage.tsx
msgid "Sign up"
msgstr "Registrarse"
@@ -654,6 +735,7 @@ msgstr "Algo malo acaba de pasar..."
msgid "Space"
msgstr "Espacio"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Star"
msgstr "estrella"
@@ -669,23 +751,29 @@ msgstr "Destacado"
msgid "Subscribe"
msgstr "Suscribirse"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "URL de suscripción"
#: src/components/content/add/Subscribe.tsx
msgid "Subscribe to the feed"
msgstr "Suscríbete a la fuente"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "URL de suscripción"
#: src/components/Alert.tsx
msgid "Success"
msgstr "Éxito"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Swipe header to the right"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to dark theme"
msgstr "Cambiar a tema oscuro"
#: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to light theme"
msgstr "Cambiar a tema claro"
@@ -709,10 +797,15 @@ msgstr "Alternar estado de lectura de la entrada actual"
msgid "Try out CommaFeed with the demo account: demo/demo"
msgstr "Pruebe CommaFeed con la cuenta demo: demo/demo"
#: src/pages/WelcomePage.tsx
msgid "Try the demo!"
msgstr ""
#: src/components/header/Header.tsx
msgid "Unread"
msgstr "No leído"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Unstar"
msgstr "Desmarcar"
@@ -722,15 +815,15 @@ msgstr "Desmarcar"
msgid "Unsubscribe"
msgstr "Cancelar suscripción"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Nombre de usuario"
#: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx
msgid "User Name or E-mail"
msgstr "Nombre de usuario o correo electrónico"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Nombre de usuario"
#: src/components/Alert.tsx
msgid "Warning"
msgstr "Advertencia"
@@ -743,6 +836,6 @@ 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/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "archivo requerido"
#: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh."
msgstr ""

View File

@@ -13,6 +13,14 @@ msgstr ""
"Language-Team: \n"
"Plural-Forms: \n"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "<0>CommaFeed is an open-source project. Sources are hosted on </0><1>GitHub</1>."
msgstr ""
#: src/pages/app/FeedDetailsPage.tsx
msgid "<0>Complete syntax is available </0><1>here</1>."
msgstr ""
@@ -21,14 +29,14 @@ msgstr ""
msgid "<0>Have an account?</0><1>Log in!</1>"
msgstr "<0>حساب دارید؟</0><1>وارد سیستم شوید!</1>"
#: src/pages/app/DonatePage.tsx
msgid "<0>Hey,</0><1>I'm Jérémie from Belgium and I've been working on CommaFeed in my free time for over 10 years now. Thanks for taking an interest in helping me continue supporting CommaFeed.</1>"
msgstr ""
#: src/pages/auth/LoginPage.tsx
msgid "<0>Need an account?</0><1>Sign up!</1>"
msgstr "<0>به یک حساب نیاز دارید؟</0><1>ثبت نام کنید!</1>"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "کلید API"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/AboutPage.tsx
msgid "About"
@@ -75,6 +83,10 @@ msgstr "یک فایل opml یک فایل XML است که حاوی آدرس‌ه
msgid "Analyze feed"
msgstr "خوراک را تجزیه و تحلیل کنید"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "کلید API"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Are you sure you want to delete category <0>{categoryName}</0>?"
msgstr "آیا مطمئن هستید که می خواهید دسته <0>{categoryName}</0> را حذف کنید؟"
@@ -123,6 +135,7 @@ msgstr "گسترش مرورگر"
#: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx
@@ -150,10 +163,6 @@ msgstr "تغییر رمز عبور یک کلید API جدید ایجاد می ک
msgid "Check that the feed is working"
msgstr "بررسی کنید که خوراک کار می کند"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>."
msgstr "CommaFeed یک پروژه منبع باز است. "
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item"
msgstr "مورد خوانده نشده بعدی CommaFeed"
@@ -194,6 +203,18 @@ msgstr ""
msgid "Current password"
msgstr "رمز عبور فعلی"
#: src/pages/app/SettingsPage.tsx
msgid "Custom code"
msgstr ""
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom CSS rules that will be applied"
msgstr ""
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom JS code that will be executed on page load"
msgstr ""
#: src/pages/admin/AdminUsersPage.tsx
msgid "Date created"
msgstr "تاریخ ایجاد"
@@ -202,15 +223,15 @@ msgstr "تاریخ ایجاد"
msgid "Delete"
msgstr "حذف کنید"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "حذف دسته"
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
msgid "Delete account"
msgstr "حذف حساب"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "حذف دسته"
#: src/pages/admin/AdminUsersPage.tsx
msgid "Delete user"
msgstr "حذف کاربر"
@@ -219,11 +240,20 @@ msgstr "حذف کاربر"
msgid "Desc"
msgstr "توصیف"
#: src/components/header/ProfileMenu.tsx
msgid "Detailed"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/SettingsPage.tsx
msgid "Display"
msgstr "نمایش"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/DonatePage.tsx
msgid "Donate"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "Download"
msgstr "دانلود"
@@ -278,15 +308,28 @@ msgstr "گسترش یافت"
msgid "Export your subscriptions and categories as an OPML file that can be imported in other feed reading services"
msgstr "اشتراک ها و دسته های خود را به عنوان یک فایل OPML صادر کنید که می تواند در سایر خدمات خواندن فید وارد شود"
#: src/components/header/Header.tsx
#: src/pages/WelcomePage.tsx
msgid "Extension options"
msgstr ""
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "نام فید"
#: src/components/content/add/Subscribe.tsx
#: src/components/content/add/Subscribe.tsx
#: src/pages/app/FeedDetailsPage.tsx
msgid "Feed URL"
msgstr "URL فید"
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "نام فید"
#: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now"
msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "فایل مورد نیاز است"
#: src/pages/app/FeedDetailsPage.tsx
msgid "Filtering expression"
@@ -312,14 +355,18 @@ msgstr "کلید API جدید ایجاد کنید"
msgid "Generated feed url"
msgstr "آدرس اینترنتی فید تولید شده"
#: src/pages/app/AboutPage.tsx
msgid "Go to the API documentation."
msgstr "به مستندات API بروید."
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Go to {0}"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Go to the All view"
msgstr "به نمای All بروید"
#: src/pages/app/AboutPage.tsx
msgid "Go to the API documentation."
msgstr "به مستندات API بروید."
#: src/pages/app/AboutPage.tsx
msgid "Goodies"
msgstr "خوبی ها"
@@ -336,10 +383,6 @@ msgstr "اگر خالی نباشد، عبارتی به \"درست\" یا \"نا
msgid "If you encounter an issue, please report it on the issues page of the GitHub project."
msgstr "اگر با مشکلی مواجه شدید، لطفاً آن را در صفحه مشکلات پروژه GitHub گزارش دهید."
#: src/pages/app/AboutPage.tsx
msgid "If you like this project, please consider a donation to support the developer and help cover the costs of keeping this website online."
msgstr "اگر این پروژه را دوست دارید، لطفاً کمک مالی برای حمایت از توسعه دهنده و کمک به پوشش هزینه های آنلاین نگه داشتن این وب سایت در نظر بگیرید."
#: src/components/content/add/ImportOpml.tsx
msgid "Import"
msgstr "واردات"
@@ -348,6 +391,7 @@ msgstr "واردات"
msgid "In expanded view, scrolling through entries mark them as read"
msgstr "در نمای بازشده، پیمایش در ورودی‌ها، آنها را به عنوان خوانده شده علامت‌گذاری می‌کند"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Keep unread"
msgstr "خوانده نشده نگه دارید"
@@ -397,6 +441,7 @@ msgstr "بارگیری برچسب ها..."
#: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx
#: src/pages/WelcomePage.tsx
msgid "Log in"
msgstr "وارد شوید"
@@ -404,6 +449,10 @@ msgstr "وارد شوید"
msgid "Logout"
msgstr "خروج"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Long press"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/admin/AdminUsersPage.tsx
msgid "Manage users"
@@ -418,10 +467,12 @@ msgstr "همه را به عنوان خوانده شده علامت گذاری ک
msgid "Mark all entries as read"
msgstr "همه ورودی ها را به عنوان خوانده شده علامت گذاری کنید"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Mark as read"
msgstr "علامت گذاری به عنوان خوانده شده"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Mark as read up to here"
msgstr "تا اینجا به عنوان خوانده شده علامت بزنید"
@@ -430,6 +481,10 @@ msgstr "تا اینجا به عنوان خوانده شده علامت بزنی
msgid "Metrics"
msgstr "متریک"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Middle click"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Move the page down"
msgstr "صفحه را به پایین ببرید"
@@ -482,19 +537,6 @@ msgstr "ورودی دیگری وجود ندارد"
msgid "Nothing found"
msgstr "چیزی پیدا نشد"
#: src/pages/app/AddPage.tsx
msgid "OPML"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "OPML export"
msgstr "صادرات OPML"
#: src/components/content/add/ImportOpml.tsx
#: src/components/content/add/ImportOpml.tsx
msgid "OPML file"
msgstr "فایل OPML"
#: src/pages/app/AboutPage.tsx
msgid "Oldest first"
msgstr "قدیمی ترین اول"
@@ -503,6 +545,10 @@ msgstr "قدیمی ترین اول"
msgid "Oops!"
msgstr "اوه!"
#: src/components/header/Header.tsx
msgid "Open CommaFeed"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open current entry in a new tab"
msgstr "ورودی فعلی را در یک برگه جدید باز کنید"
@@ -515,6 +561,14 @@ msgstr "ورودی فعلی را در یک برگه جدید در پس زمین
msgid "Open link"
msgstr "پیوند را باز کنید"
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Open link in new background tab"
msgstr ""
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Open link in new tab"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open next entry"
msgstr "ورودی بعدی را باز کنید"
@@ -527,6 +581,19 @@ msgstr "ورودی قبلی را باز کنید"
msgid "Open/close current entry"
msgstr "باز کردن/بستن ورودی فعلی"
#: src/pages/app/AddPage.tsx
msgid "OPML"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "OPML export"
msgstr "صادرات OPML"
#: src/components/content/add/ImportOpml.tsx
#: src/components/content/add/ImportOpml.tsx
msgid "OPML file"
msgstr "فایل OPML"
#: src/pages/app/AboutPage.tsx
msgid "Order"
msgstr "سفارش"
@@ -564,10 +631,6 @@ msgstr "موقعیت"
msgid "Profile"
msgstr "نمایه"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/pages/auth/PasswordRecoveryPage.tsx
msgid "Recover password"
msgstr "بازیابی رمز عبور"
@@ -581,7 +644,16 @@ msgstr "تازه کردن"
msgid "Registrations are closed on this CommaFeed instance"
msgstr "ثبت نام در این نمونه CommaFeed بسته شده است"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx
@@ -632,6 +704,14 @@ msgstr "اشتراک گذاری سایت ها"
msgid "Shift"
msgstr "شیفت"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Show entry menu (desktop)"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Show entry menu (mobile)"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Show feeds and categories with no unread entries"
msgstr "فیدها و دسته ها را بدون ورودی خوانده نشده نشان دهید"
@@ -642,6 +722,7 @@ msgstr "نمایش راهنمایی میانبر صفحه کلید"
#: src/pages/auth/RegistrationPage.tsx
#: src/pages/auth/RegistrationPage.tsx
#: src/pages/WelcomePage.tsx
msgid "Sign up"
msgstr "ثبت نام کنید"
@@ -654,6 +735,7 @@ msgstr "اتفاق بدی افتاد..."
msgid "Space"
msgstr "فضا"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Star"
msgstr "ستاره"
@@ -669,23 +751,29 @@ msgstr "ستاره دار"
msgid "Subscribe"
msgstr "مشترک شوید"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "URL اشتراک"
#: src/components/content/add/Subscribe.tsx
msgid "Subscribe to the feed"
msgstr "در فید مشترک شوید"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "URL اشتراک"
#: src/components/Alert.tsx
msgid "Success"
msgstr "موفقیت"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Swipe header to the right"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to dark theme"
msgstr "تغییر به تم تیره"
#: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to light theme"
msgstr "روی زمینه روشن"
@@ -709,10 +797,15 @@ msgstr "وضعیت خواندن ورودی فعلی را تغییر دهید"
msgid "Try out CommaFeed with the demo account: demo/demo"
msgstr "CommaFeed را با حساب آزمایشی امتحان کنید: دمو/دمو"
#: src/pages/WelcomePage.tsx
msgid "Try the demo!"
msgstr ""
#: src/components/header/Header.tsx
msgid "Unread"
msgstr "خوانده نشده"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Unstar"
msgstr ""
@@ -722,15 +815,15 @@ msgstr ""
msgid "Unsubscribe"
msgstr "لغو اشتراک"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "نام کاربری"
#: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx
msgid "User Name or E-mail"
msgstr "نام کاربری یا ایمیل"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "نام کاربری"
#: src/components/Alert.tsx
msgid "Warning"
msgstr "هشدار"
@@ -743,6 +836,6 @@ 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/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "فایل مورد نیاز است"
#: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh."
msgstr ""

View File

@@ -13,6 +13,14 @@ msgstr ""
"Language-Team: \n"
"Plural-Forms: \n"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "<0>CommaFeed is an open-source project. Sources are hosted on </0><1>GitHub</1>."
msgstr ""
#: src/pages/app/FeedDetailsPage.tsx
msgid "<0>Complete syntax is available </0><1>here</1>."
msgstr ""
@@ -21,14 +29,14 @@ msgstr ""
msgid "<0>Have an account?</0><1>Log in!</1>"
msgstr "<0>Onko sinulla tili?</0><1>Kirjaudu sisään!</1>"
#: src/pages/app/DonatePage.tsx
msgid "<0>Hey,</0><1>I'm Jérémie from Belgium and I've been working on CommaFeed in my free time for over 10 years now. Thanks for taking an interest in helping me continue supporting CommaFeed.</1>"
msgstr ""
#: src/pages/auth/LoginPage.tsx
msgid "<0>Need an account?</0><1>Sign up!</1>"
msgstr "<0>Tarvitsetko tilin?</0><1>Rekisteröidy!</1>"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "API-avain"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/AboutPage.tsx
msgid "About"
@@ -75,6 +83,10 @@ msgstr "Opml-tiedosto on XML-tiedosto, joka sisältää syötteen URL-osoitteet
msgid "Analyze feed"
msgstr "Analysoi syöte"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "API-avain"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Are you sure you want to delete category <0>{categoryName}</0>?"
msgstr "Haluatko varmasti poistaa luokan <0>{categoryName}</0>?"
@@ -123,6 +135,7 @@ msgstr "Selaimen laajennukset"
#: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx
@@ -150,10 +163,6 @@ msgstr "Salasanan vaihtaminen luo uuden API-avaimen"
msgid "Check that the feed is working"
msgstr "Tarkista, että syöttö toimii"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>."
msgstr "CommaFeed on avoimen lähdekoodin projekti. "
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item"
msgstr "CommaFeed seuraava lukematon kohde"
@@ -194,6 +203,18 @@ msgstr ""
msgid "Current password"
msgstr "Nykyinen salasana"
#: src/pages/app/SettingsPage.tsx
msgid "Custom code"
msgstr ""
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom CSS rules that will be applied"
msgstr ""
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom JS code that will be executed on page load"
msgstr ""
#: src/pages/admin/AdminUsersPage.tsx
msgid "Date created"
msgstr "Luontipäivämäärä"
@@ -202,15 +223,15 @@ msgstr "Luontipäivämäärä"
msgid "Delete"
msgstr "Poista"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Poista luokka"
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
msgid "Delete account"
msgstr "Poista tili"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Poista luokka"
#: src/pages/admin/AdminUsersPage.tsx
msgid "Delete user"
msgstr "Poista käyttäjä"
@@ -219,11 +240,20 @@ msgstr "Poista käyttäjä"
msgid "Desc"
msgstr ""
#: src/components/header/ProfileMenu.tsx
msgid "Detailed"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/SettingsPage.tsx
msgid "Display"
msgstr "Näyttö"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/DonatePage.tsx
msgid "Donate"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "Download"
msgstr "Lataa"
@@ -278,15 +308,28 @@ msgstr "Laajennettu"
msgid "Export your subscriptions and categories as an OPML file that can be imported in other feed reading services"
msgstr "Vie tilauksesi ja luokat OPML-tiedostona, joka voidaan tuoda muihin syötteiden lukupalveluihin"
#: src/components/header/Header.tsx
#: src/pages/WelcomePage.tsx
msgid "Extension options"
msgstr ""
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "Syötteen nimi"
#: src/components/content/add/Subscribe.tsx
#: src/components/content/add/Subscribe.tsx
#: src/pages/app/FeedDetailsPage.tsx
msgid "Feed URL"
msgstr "Syötteen URL-osoite"
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "Syötteen nimi"
#: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now"
msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "tiedosto vaaditaan"
#: src/pages/app/FeedDetailsPage.tsx
msgid "Filtering expression"
@@ -312,14 +355,18 @@ msgstr "Luo uusi API-avain"
msgid "Generated feed url"
msgstr "Luotu syötteen URL-osoite"
#: src/pages/app/AboutPage.tsx
msgid "Go to the API documentation."
msgstr "Siirry API-dokumentaatioon."
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Go to {0}"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Go to the All view"
msgstr "Siirry Kaikki-näkymään"
#: src/pages/app/AboutPage.tsx
msgid "Go to the API documentation."
msgstr "Siirry API-dokumentaatioon."
#: src/pages/app/AboutPage.tsx
msgid "Goodies"
msgstr "Hyvää"
@@ -336,10 +383,6 @@ msgstr "Jos ei tyhjä, lauseke, jonka arvo on \"tosi\" tai \"epätosi\". "
msgid "If you encounter an issue, please report it on the issues page of the GitHub project."
msgstr "Jos kohtaat ongelman, ilmoita siitä GitHub-projektin ongelmasivulla."
#: src/pages/app/AboutPage.tsx
msgid "If you like this project, please consider a donation to support the developer and help cover the costs of keeping this website online."
msgstr "Jos pidät tästä projektista, harkitse lahjoitusta tukeaksesi kehittäjää ja autat kattamaan tämän verkkosivuston verkossa pitämisestä aiheutuvat kulut."
#: src/components/content/add/ImportOpml.tsx
msgid "Import"
msgstr "Tuo"
@@ -348,6 +391,7 @@ msgstr "Tuo"
msgid "In expanded view, scrolling through entries mark them as read"
msgstr "Merkitse ne luetuiksi laajennetussa näkymässä vierittämällä merkintöjä"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Keep unread"
msgstr "Pidä lukematta"
@@ -397,6 +441,7 @@ msgstr "Ladataan tunnisteita..."
#: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx
#: src/pages/WelcomePage.tsx
msgid "Log in"
msgstr "Kirjaudu sisään"
@@ -404,6 +449,10 @@ msgstr "Kirjaudu sisään"
msgid "Logout"
msgstr "Uloskirjautuminen"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Long press"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/admin/AdminUsersPage.tsx
msgid "Manage users"
@@ -418,10 +467,12 @@ msgstr "Merkitse kaikki luetuiksi"
msgid "Mark all entries as read"
msgstr "Merkitse kaikki merkinnät luetuiksi"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Mark as read"
msgstr "Merkitse luetuksi"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Mark as read up to here"
msgstr "Merkitse luetuksi tähän asti"
@@ -430,6 +481,10 @@ msgstr "Merkitse luetuksi tähän asti"
msgid "Metrics"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Middle click"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Move the page down"
msgstr "Siirrä sivua alaspäin"
@@ -482,19 +537,6 @@ msgstr "Ei enää merkintöjä"
msgid "Nothing found"
msgstr "Mitään ei löytynyt"
#: src/pages/app/AddPage.tsx
msgid "OPML"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "OPML export"
msgstr "OPML-vienti"
#: src/components/content/add/ImportOpml.tsx
#: src/components/content/add/ImportOpml.tsx
msgid "OPML file"
msgstr "OPML-tiedosto"
#: src/pages/app/AboutPage.tsx
msgid "Oldest first"
msgstr "Vanhin ensin"
@@ -503,6 +545,10 @@ msgstr "Vanhin ensin"
msgid "Oops!"
msgstr "Hups!"
#: src/components/header/Header.tsx
msgid "Open CommaFeed"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open current entry in a new tab"
msgstr "Avaa nykyinen merkintä uudessa välilehdessä"
@@ -515,6 +561,14 @@ msgstr "Avaa nykyinen merkintä uudella välilehdellä taustalla"
msgid "Open link"
msgstr "Avaa linkki"
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Open link in new background tab"
msgstr ""
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Open link in new tab"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open next entry"
msgstr "Avaa seuraava merkintä"
@@ -527,6 +581,19 @@ msgstr "Avaa edellinen merkintä"
msgid "Open/close current entry"
msgstr "Avaa/sulje nykyinen merkintä"
#: src/pages/app/AddPage.tsx
msgid "OPML"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "OPML export"
msgstr "OPML-vienti"
#: src/components/content/add/ImportOpml.tsx
#: src/components/content/add/ImportOpml.tsx
msgid "OPML file"
msgstr "OPML-tiedosto"
#: src/pages/app/AboutPage.tsx
msgid "Order"
msgstr "Tilaus"
@@ -564,10 +631,6 @@ msgstr "Sijainti"
msgid "Profile"
msgstr "Profiili"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/pages/auth/PasswordRecoveryPage.tsx
msgid "Recover password"
msgstr "Palauta salasana"
@@ -581,7 +644,16 @@ msgstr "Päivitä"
msgid "Registrations are closed on this CommaFeed instance"
msgstr "Tämän CommaFeed-esiintymän rekisteröinnit on suljettu"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx
@@ -632,6 +704,14 @@ msgstr "Sivustojen jakaminen"
msgid "Shift"
msgstr "Vaihto"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Show entry menu (desktop)"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Show entry menu (mobile)"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Show feeds and categories with no unread entries"
msgstr "Näytä syötteet ja luokat ilman lukemattomia merkintöjä"
@@ -642,6 +722,7 @@ msgstr "Näytä pikanäppäimen ohje"
#: src/pages/auth/RegistrationPage.tsx
#: src/pages/auth/RegistrationPage.tsx
#: src/pages/WelcomePage.tsx
msgid "Sign up"
msgstr "Rekisteröidy"
@@ -654,6 +735,7 @@ msgstr "Jotain pahaa tapahtui juuri..."
msgid "Space"
msgstr "Avaruus"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Star"
msgstr "Tähti"
@@ -669,23 +751,29 @@ msgstr "Tähdellä merkitty"
msgid "Subscribe"
msgstr "Tilaa"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "Tilaa URL-osoite"
#: src/components/content/add/Subscribe.tsx
msgid "Subscribe to the feed"
msgstr "Tilaa syöte"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "Tilaa URL-osoite"
#: src/components/Alert.tsx
msgid "Success"
msgstr "Onnistui"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Swipe header to the right"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to dark theme"
msgstr "Vaihda tummaan teemaan"
#: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to light theme"
msgstr "Vaihda vaaleaan teemaan"
@@ -709,10 +797,15 @@ msgstr "Vaihda nykyisen merkinnän lukutila"
msgid "Try out CommaFeed with the demo account: demo/demo"
msgstr "Kokeile CommaFeediä demotilillä: demo/demo"
#: src/pages/WelcomePage.tsx
msgid "Try the demo!"
msgstr ""
#: src/components/header/Header.tsx
msgid "Unread"
msgstr "Lukematon"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Unstar"
msgstr "Poista tähti"
@@ -722,15 +815,15 @@ msgstr "Poista tähti"
msgid "Unsubscribe"
msgstr "Peruuta tilaus"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Käyttäjänimi"
#: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx
msgid "User Name or E-mail"
msgstr "Käyttäjänimi tai sähköpostiosoite"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Käyttäjänimi"
#: src/components/Alert.tsx
msgid "Warning"
msgstr "Varoitus"
@@ -743,6 +836,6 @@ 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/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "tiedosto vaaditaan"
#: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh."
msgstr ""

View File

@@ -13,6 +13,14 @@ msgstr ""
"Language-Team: \n"
"Plural-Forms: \n"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr "{0} (sur {1})"
#: src/pages/app/AboutPage.tsx
msgid "<0>CommaFeed is an open-source project. Sources are hosted on </0><1>GitHub</1>."
msgstr "<0>CommaFeed est un projet open-source. Les sources sont hébergées sur </0><1>GitHub</1>."
#: src/pages/app/FeedDetailsPage.tsx
msgid "<0>Complete syntax is available </0><1>here</1>."
msgstr "<0>La syntaxe complète est disponible </0><1>ici</1>."
@@ -21,18 +29,18 @@ msgstr "<0>La syntaxe complète est disponible </0><1>ici</1>."
msgid "<0>Have an account?</0><1>Log in!</1>"
msgstr "<0>Déjà un compte ?</0><1>Connectez-vous !</1>"
#: src/pages/app/DonatePage.tsx
msgid "<0>Hey,</0><1>I'm Jérémie from Belgium and I've been working on CommaFeed in my free time for over 10 years now. Thanks for taking an interest in helping me continue supporting CommaFeed.</1>"
msgstr "<0>Salut,</0><1>Je m'appelle Jérémie, je suis belge, et je développe CommaFeed sur mon temps libre depuis maintenant 10 ans. Merci de m'aider à continuer de maintenir CommaFeed.</1>"
#: src/pages/auth/LoginPage.tsx
msgid "<0>Need an account?</0><1>Sign up!</1>"
msgstr "<0>Besoin d'un compte ?</0><1>Enregistrez-vous !</1>"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "Clé API"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/AboutPage.tsx
msgid "About"
msgstr "A propos"
msgstr "À propos"
#: src/pages/admin/AdminUsersPage.tsx
msgid "Actions"
@@ -75,13 +83,17 @@ msgstr "Un fichier OPML est un fichier XML contenant des URL de flux et des cat
msgid "Analyze feed"
msgstr "Analyser le flux"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "Clé API"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Are you sure you want to delete category <0>{categoryName}</0>?"
msgstr "Etes-vous sûr de vouloir supprimer la catégorie <0>{categoryName}</0>?"
msgstr "Êtes-vous sûr de vouloir supprimer la catégorie <0>{categoryName}</0> ?"
#: src/pages/admin/AdminUsersPage.tsx
msgid "Are you sure you want to delete user <0>{userName}</0> ?"
msgstr "Etes-vous sûr de vouloir supprimer l'utilisateur <0>{userName}</0> ?"
msgstr "Êtes-vous sûr de vouloir supprimer l'utilisateur <0>{userName}</0> ?"
#: src/components/settings/ProfileSettings.tsx
msgid "Are you sure you want to delete your account? There's no turning back!"
@@ -89,15 +101,15 @@ msgstr "Êtes-vous sûr de vouloir supprimer définitivement votre compte ?"
#: src/components/header/MarkAllAsReadButton.tsx
msgid "Are you sure you want to mark all entries of <0>{sourceLabel}</0> as read?"
msgstr "Etes-vous sûr de vouloir marquer toutes les entrées de <0>{sourceLabel}</0> comme lues?"
msgstr "Êtes-vous sûr de vouloir marquer toutes les entrées de <0>{sourceLabel}</0> comme lues ?"
#: src/components/header/MarkAllAsReadButton.tsx
msgid "Are you sure you want to mark entries older than {threshold} days of <0>{sourceLabel}</0> as read?"
msgstr "Etes-vous sûr de vouloir marquer les entrées de <0>{sourceLabel}</0> plus anciennes que {threshold} jours comme lues?"
msgstr "Êtes-vous sûr de vouloir marquer les entrées de <0>{sourceLabel}</0> plus anciennes que {threshold} jours comme lues ?"
#: src/pages/app/FeedDetailsPage.tsx
msgid "Are you sure you want to unsubscribe from <0>{feedName}</0>?"
msgstr "Etes-vous sûr de vouloir vous désabonner de <0>{feedName}</0>?"
msgstr "Êtes-vous sûr de vouloir vous désabonner de <0>{feedName}</0> ?"
#: src/components/header/Header.tsx
msgid "Asc"
@@ -123,6 +135,7 @@ msgstr "Extensions pour navigateurs"
#: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx
@@ -150,10 +163,6 @@ msgstr "Changer de mot de passe générera une nouvelle clé API"
msgid "Check that the feed is working"
msgstr "Vérifie que le flux fonctionne"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>."
msgstr "CommaFeed est un projet open-source. Les sources sont hébergées sur <0>GitHub</0>."
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item"
msgstr "CommaFeed prochain article non lu"
@@ -184,7 +193,7 @@ msgstr "Cozy"
#: src/components/content/FeedEntryFooter.tsx
msgid "Create tag: {query}"
msgstr "Créer le tag: {query}"
msgstr "Créer le marqueur : {query}"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Ctrl"
@@ -194,6 +203,18 @@ msgstr "Ctrl"
msgid "Current password"
msgstr "Mot de passe actuel"
#: src/pages/app/SettingsPage.tsx
msgid "Custom code"
msgstr "Code personnalisé"
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom CSS rules that will be applied"
msgstr "Code CSS personnalisé qui sera appliqué"
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom JS code that will be executed on page load"
msgstr "Code JS personnalisé qui sera appliqué au chargement des pages"
#: src/pages/admin/AdminUsersPage.tsx
msgid "Date created"
msgstr "Date de création"
@@ -202,15 +223,15 @@ msgstr "Date de création"
msgid "Delete"
msgstr "Effacer"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Effacer la catégorie"
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
msgid "Delete account"
msgstr "Effacer le compte"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Effacer la catégorie"
#: src/pages/admin/AdminUsersPage.tsx
msgid "Delete user"
msgstr "Effacer l'utilisateur"
@@ -219,11 +240,20 @@ msgstr "Effacer l'utilisateur"
msgid "Desc"
msgstr "Descendant"
#: src/components/header/ProfileMenu.tsx
msgid "Detailed"
msgstr "Vue détaillée"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/SettingsPage.tsx
msgid "Display"
msgstr "Affichage"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/DonatePage.tsx
msgid "Donate"
msgstr "Faites un don"
#: src/components/settings/ProfileSettings.tsx
msgid "Download"
msgstr "Télécharger"
@@ -278,15 +308,28 @@ msgstr "Vue étendue"
msgid "Export your subscriptions and categories as an OPML file that can be imported in other feed reading services"
msgstr "Exporter vos abonnements et catégories en tant que fichier OPML qui peut être importé dans d'autres services de lecture de flux"
#: src/components/header/Header.tsx
#: src/pages/WelcomePage.tsx
msgid "Extension options"
msgstr ""
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "Nom du flux"
#: src/components/content/add/Subscribe.tsx
#: src/components/content/add/Subscribe.tsx
#: src/pages/app/FeedDetailsPage.tsx
msgid "Feed URL"
msgstr "URL du flux"
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "Nom du flux"
#: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now"
msgstr "Rafraîchir tous mes flux"
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "fichier requis"
#: src/pages/app/FeedDetailsPage.tsx
msgid "Filtering expression"
@@ -312,14 +355,18 @@ msgstr "Générer une nouvelle clé API"
msgid "Generated feed url"
msgstr "URL du flux généré"
#: src/pages/app/AboutPage.tsx
msgid "Go to the API documentation."
msgstr "Aller à la documentation de l'API."
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Go to {0}"
msgstr "Aller à {0}"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Go to the All view"
msgstr "Aller à la catégorie Tout"
#: src/pages/app/AboutPage.tsx
msgid "Go to the API documentation."
msgstr "Aller à la documentation de l'API."
#: src/pages/app/AboutPage.tsx
msgid "Goodies"
msgstr "Extensions"
@@ -336,10 +383,6 @@ msgstr "Si non vide, une expression évaluant à 'vrai' ou 'faux'. Si faux, les
msgid "If you encounter an issue, please report it on the issues page of the GitHub project."
msgstr "Si vous rencontrez un problème, merci de le signaler sur la page du projet GitHub."
#: src/pages/app/AboutPage.tsx
msgid "If you like this project, please consider a donation to support the developer and help cover the costs of keeping this website online."
msgstr "Si vous aimez ce projet, n'hésitez pas à faire un don pour encourager le développeur et aider à couvrir les coûts d'hébergement de la plate-forme."
#: src/components/content/add/ImportOpml.tsx
msgid "Import"
msgstr "Importer"
@@ -348,6 +391,7 @@ msgstr "Importer"
msgid "In expanded view, scrolling through entries mark them as read"
msgstr "En mode de lecture étendu, marquer les éléments comme lus lorsque la fenêtre descend."
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Keep unread"
msgstr "Garder non lu"
@@ -381,22 +425,23 @@ msgstr "Lien"
#: src/hooks/useAppLoading.ts
msgid "Loading profile..."
msgstr "Chargement du profil ..."
msgstr "Chargement du profil..."
#: src/hooks/useAppLoading.ts
msgid "Loading settings..."
msgstr "Chargement des paramètres ..."
msgstr "Chargement des paramètres..."
#: src/hooks/useAppLoading.ts
msgid "Loading subscriptions..."
msgstr "Chargement des abonnements ..."
msgstr "Chargement des abonnements..."
#: src/hooks/useAppLoading.ts
msgid "Loading tags..."
msgstr "Chargement des tags ..."
msgstr "Chargement des marqueurs..."
#: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx
#: src/pages/WelcomePage.tsx
msgid "Log in"
msgstr "Connexion"
@@ -404,6 +449,10 @@ msgstr "Connexion"
msgid "Logout"
msgstr "Déconnexion"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Long press"
msgstr "Appui long"
#: src/components/header/ProfileMenu.tsx
#: src/pages/admin/AdminUsersPage.tsx
msgid "Manage users"
@@ -418,10 +467,12 @@ msgstr "Tout marquer comme lu"
msgid "Mark all entries as read"
msgstr "Marquer toutes les entrées comme lues"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Mark as read"
msgstr "Marquer comme lu"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Mark as read up to here"
msgstr "Marquer comme lu jusqu'ici"
@@ -430,6 +481,10 @@ msgstr "Marquer comme lu jusqu'ici"
msgid "Metrics"
msgstr "Métriques"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Middle click"
msgstr "Clic milieu"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Move the page down"
msgstr "Faites défiler la page vers le bas"
@@ -476,25 +531,12 @@ msgstr "Bookmarklet vers le prochain article non lu"
#: src/pages/app/FeedEntriesPage.tsx
msgid "No more entries"
msgstr "Plus d'entrées"
msgstr "Fin de la liste"
#: src/components/sidebar/TreeSearch.tsx
msgid "Nothing found"
msgstr "Aucun résultat"
#: src/pages/app/AddPage.tsx
msgid "OPML"
msgstr "OPML"
#: src/components/settings/ProfileSettings.tsx
msgid "OPML export"
msgstr "Export du fichier OPML"
#: src/components/content/add/ImportOpml.tsx
#: src/components/content/add/ImportOpml.tsx
msgid "OPML file"
msgstr "Fichier OPML"
#: src/pages/app/AboutPage.tsx
msgid "Oldest first"
msgstr "Du plus ancien au plus récent"
@@ -503,6 +545,10 @@ msgstr "Du plus ancien au plus récent"
msgid "Oops!"
msgstr "Oups !"
#: src/components/header/Header.tsx
msgid "Open CommaFeed"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open current entry in a new tab"
msgstr "Ouvrir l'entrée actuelle dans un nouvel onglet"
@@ -515,6 +561,14 @@ msgstr "Ouvrir l'entrée actuelle dans un nouvel onglet en arrière-plan"
msgid "Open link"
msgstr "Ouvrir le lien"
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Open link in new background tab"
msgstr "Ouvrir le lien dans un nouvel onglet en arrière-plan"
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Open link in new tab"
msgstr "Ouvrir le lien dans un nouvel onglet"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open next entry"
msgstr "Ouvrir l'entrée suivante"
@@ -527,6 +581,19 @@ msgstr "Ouvrir l'entrée précédente"
msgid "Open/close current entry"
msgstr "Ouvrir/fermer l'entrée actuelle"
#: src/pages/app/AddPage.tsx
msgid "OPML"
msgstr "OPML"
#: src/components/settings/ProfileSettings.tsx
msgid "OPML export"
msgstr "Export du fichier OPML"
#: src/components/content/add/ImportOpml.tsx
#: src/components/content/add/ImportOpml.tsx
msgid "OPML file"
msgstr "Fichier OPML"
#: src/pages/app/AboutPage.tsx
msgid "Order"
msgstr "Ordre"
@@ -564,10 +631,6 @@ msgstr "Position"
msgid "Profile"
msgstr "Profil"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr "API REST"
#: src/pages/auth/PasswordRecoveryPage.tsx
msgid "Recover password"
msgstr "Récupérer le mot de passe"
@@ -581,7 +644,16 @@ msgstr "Rafraîchir"
msgid "Registrations are closed on this CommaFeed instance"
msgstr "Les inscriptions sont fermées sur cette instance de CommaFeed"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr "API REST"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click"
msgstr "Clic droit"
#: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx
@@ -632,6 +704,14 @@ msgstr "Sites de partage"
msgid "Shift"
msgstr "Maj"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Show entry menu (desktop)"
msgstr "Afficher les options de l'entrée (ordinateur)"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Show entry menu (mobile)"
msgstr "Afficher les options de l'entrée (mobile)"
#: src/components/settings/DisplaySettings.tsx
msgid "Show feeds and categories with no unread entries"
msgstr "Afficher les flux et les catégories pour lesquels tout est déjà lu"
@@ -642,6 +722,7 @@ msgstr "Montrer les raccourcis clavier"
#: src/pages/auth/RegistrationPage.tsx
#: src/pages/auth/RegistrationPage.tsx
#: src/pages/WelcomePage.tsx
msgid "Sign up"
msgstr "Créer un compte"
@@ -654,6 +735,7 @@ msgstr "Quelque chose s'est mal passé..."
msgid "Space"
msgstr "Espace"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Star"
msgstr "Ajouter aux favoris"
@@ -669,29 +751,35 @@ msgstr "Favoris"
msgid "Subscribe"
msgstr "S'abonner"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "URL pour s'abonner"
#: src/components/content/add/Subscribe.tsx
msgid "Subscribe to the feed"
msgstr "S'abonner au flux"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "URL pour s'abonner"
#: src/components/Alert.tsx
msgid "Success"
msgstr "Succès"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Swipe header to the right"
msgstr "Faire glisser le titre vers la droite"
#: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to dark theme"
msgstr "Activer le mode sombre"
#: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to light theme"
msgstr "Activer le mode clair"
#: src/components/content/FeedEntryFooter.tsx
msgid "Tags"
msgstr "Tags"
msgstr "Marqueurs"
#: src/components/content/add/Subscribe.tsx
msgid "The URL for the feed you want to subscribe to. You can also use the website's url directly and CommaFeed will try to find the feed in the page."
@@ -709,10 +797,15 @@ msgstr "Marquer l'entrée actuelle comme lue/non lue"
msgid "Try out CommaFeed with the demo account: demo/demo"
msgstr "Essayez CommaFeed avec le compte de démonstration : demo/demo"
#: src/pages/WelcomePage.tsx
msgid "Try the demo!"
msgstr "Essayez la version de démonstration !"
#: src/components/header/Header.tsx
msgid "Unread"
msgstr "Non lu"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Unstar"
msgstr "Retirer des favoris"
@@ -722,15 +815,15 @@ msgstr "Retirer des favoris"
msgid "Unsubscribe"
msgstr "Se désabonner"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Nom"
#: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx
msgid "User Name or E-mail"
msgstr "Nom d'utilisateur ou e-mail"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Nom"
#: src/components/Alert.tsx
msgid "Warning"
msgstr "Attention"
@@ -743,6 +836,6 @@ 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/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "fichier requis"
#: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh."
msgstr "Vos flux sont en cours de rafraîchissement"

View File

@@ -13,6 +13,14 @@ msgstr ""
"Language-Team: \n"
"Plural-Forms: \n"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "<0>CommaFeed is an open-source project. Sources are hosted on </0><1>GitHub</1>."
msgstr ""
#: src/pages/app/FeedDetailsPage.tsx
msgid "<0>Complete syntax is available </0><1>here</1>."
msgstr ""
@@ -21,14 +29,14 @@ msgstr ""
msgid "<0>Have an account?</0><1>Log in!</1>"
msgstr "<0>Tes unha conta?</0><1>Iniciar sesión!</1>"
#: src/pages/app/DonatePage.tsx
msgid "<0>Hey,</0><1>I'm Jérémie from Belgium and I've been working on CommaFeed in my free time for over 10 years now. Thanks for taking an interest in helping me continue supporting CommaFeed.</1>"
msgstr ""
#: src/pages/auth/LoginPage.tsx
msgid "<0>Need an account?</0><1>Sign up!</1>"
msgstr "<0>Necesitas unha conta?</0><1>Rexístrate!</1>"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "chave API"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/AboutPage.tsx
msgid "About"
@@ -75,6 +83,10 @@ msgstr "Un ficheiro opml é un ficheiro XML que contén URL e categorías de fon
msgid "Analyze feed"
msgstr "Analizar feed"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "chave API"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Are you sure you want to delete category <0>{categoryName}</0>?"
msgstr "Estás seguro de que queres eliminar a categoría <0>{categoryName}</0>?"
@@ -123,6 +135,7 @@ msgstr "Extensións do navegador"
#: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx
@@ -150,10 +163,6 @@ msgstr "O cambio de contrasinal xerará unha nova clave de API"
msgid "Check that the feed is working"
msgstr "Comproba que a fonte funciona"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>."
msgstr "CommaFeed é un proxecto de código aberto. "
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item"
msgstr "CommaFeed seguinte elemento non lido"
@@ -194,6 +203,18 @@ msgstr ""
msgid "Current password"
msgstr "Contrasinal actual"
#: src/pages/app/SettingsPage.tsx
msgid "Custom code"
msgstr ""
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom CSS rules that will be applied"
msgstr ""
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom JS code that will be executed on page load"
msgstr ""
#: src/pages/admin/AdminUsersPage.tsx
msgid "Date created"
msgstr "Data de creación"
@@ -202,15 +223,15 @@ msgstr "Data de creación"
msgid "Delete"
msgstr "Eliminar"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Eliminar categoría"
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
msgid "Delete account"
msgstr "Eliminar conta"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Eliminar categoría"
#: src/pages/admin/AdminUsersPage.tsx
msgid "Delete user"
msgstr "Eliminar usuario"
@@ -219,11 +240,20 @@ msgstr "Eliminar usuario"
msgid "Desc"
msgstr ""
#: src/components/header/ProfileMenu.tsx
msgid "Detailed"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/SettingsPage.tsx
msgid "Display"
msgstr "Exhibición"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/DonatePage.tsx
msgid "Donate"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "Download"
msgstr "Descargar"
@@ -278,15 +308,28 @@ msgstr "Ampliado"
msgid "Export your subscriptions and categories as an OPML file that can be imported in other feed reading services"
msgstr "Exporta as túas subscricións e categorías como ficheiro OPML que se pode importar noutros servizos de lectura de feeds"
#: src/components/header/Header.tsx
#: src/pages/WelcomePage.tsx
msgid "Extension options"
msgstr ""
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "Nome do feed"
#: src/components/content/add/Subscribe.tsx
#: src/components/content/add/Subscribe.tsx
#: src/pages/app/FeedDetailsPage.tsx
msgid "Feed URL"
msgstr "URL da fonte"
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "Nome do feed"
#: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now"
msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "é necesario o ficheiro"
#: src/pages/app/FeedDetailsPage.tsx
msgid "Filtering expression"
@@ -312,14 +355,18 @@ msgstr "Xerar nova clave de API"
msgid "Generated feed url"
msgstr "URL da fonte xerada"
#: src/pages/app/AboutPage.tsx
msgid "Go to the API documentation."
msgstr "Ir á documentación da API."
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Go to {0}"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Go to the All view"
msgstr "Ir á vista Todos"
#: src/pages/app/AboutPage.tsx
msgid "Go to the API documentation."
msgstr "Ir á documentación da API."
#: src/pages/app/AboutPage.tsx
msgid "Goodies"
msgstr "agasallos"
@@ -336,10 +383,6 @@ msgstr "Se non está baleira, unha expresión que se avalía como \"verdadeiro\"
msgid "If you encounter an issue, please report it on the issues page of the GitHub project."
msgstr "Se atopas algún problema, infórmao na páxina de problemas do proxecto GitHub."
#: src/pages/app/AboutPage.tsx
msgid "If you like this project, please consider a donation to support the developer and help cover the costs of keeping this website online."
msgstr "Se che gusta este proxecto, considera unha doazón para apoiar o programador e axudar a cubrir os custos de manter este sitio web en liña."
#: src/components/content/add/ImportOpml.tsx
msgid "Import"
msgstr "Importación"
@@ -348,6 +391,7 @@ msgstr "Importación"
msgid "In expanded view, scrolling through entries mark them as read"
msgstr "Na vista ampliada, ao desprazarse polas entradas márcaas como lidas"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Keep unread"
msgstr "Manter sen ler"
@@ -397,6 +441,7 @@ msgstr "Cargando etiquetas..."
#: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx
#: src/pages/WelcomePage.tsx
msgid "Log in"
msgstr "Iniciar sesión"
@@ -404,6 +449,10 @@ msgstr "Iniciar sesión"
msgid "Logout"
msgstr "Pechar sesión"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Long press"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/admin/AdminUsersPage.tsx
msgid "Manage users"
@@ -418,10 +467,12 @@ msgstr "Marcar todo como lido"
msgid "Mark all entries as read"
msgstr "Marcar todas as entradas como lidas"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Mark as read"
msgstr "Marcar como lido"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Mark as read up to here"
msgstr "Marcar como lido ata aquí"
@@ -430,6 +481,10 @@ msgstr "Marcar como lido ata aquí"
msgid "Metrics"
msgstr "Métricas"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Middle click"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Move the page down"
msgstr "Move a páxina cara abaixo"
@@ -482,19 +537,6 @@ msgstr "Non hai máis entradas"
msgid "Nothing found"
msgstr "Non se atopou nada"
#: src/pages/app/AddPage.tsx
msgid "OPML"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "OPML export"
msgstr "Exportación OPML"
#: src/components/content/add/ImportOpml.tsx
#: src/components/content/add/ImportOpml.tsx
msgid "OPML file"
msgstr "ficheiro OPML"
#: src/pages/app/AboutPage.tsx
msgid "Oldest first"
msgstr "O máis vello primeiro"
@@ -503,6 +545,10 @@ msgstr "O máis vello primeiro"
msgid "Oops!"
msgstr "Vaia!"
#: src/components/header/Header.tsx
msgid "Open CommaFeed"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open current entry in a new tab"
msgstr "Abrir a entrada actual nunha nova pestana"
@@ -515,6 +561,14 @@ msgstr "Abre a entrada actual nunha nova pestana en segundo plano"
msgid "Open link"
msgstr "ligazón aberta"
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Open link in new background tab"
msgstr ""
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Open link in new tab"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open next entry"
msgstr "Abrir a seguinte entrada"
@@ -527,6 +581,19 @@ msgstr "Abrir entrada anterior"
msgid "Open/close current entry"
msgstr "Abrir/pechar entrada actual"
#: src/pages/app/AddPage.tsx
msgid "OPML"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "OPML export"
msgstr "Exportación OPML"
#: src/components/content/add/ImportOpml.tsx
#: src/components/content/add/ImportOpml.tsx
msgid "OPML file"
msgstr "ficheiro OPML"
#: src/pages/app/AboutPage.tsx
msgid "Order"
msgstr "Orde"
@@ -564,10 +631,6 @@ msgstr "Posición"
msgid "Profile"
msgstr "Perfil"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr "API REST"
#: src/pages/auth/PasswordRecoveryPage.tsx
msgid "Recover password"
msgstr "Recuperar o contrasinal"
@@ -581,7 +644,16 @@ msgstr "Actualizar"
msgid "Registrations are closed on this CommaFeed instance"
msgstr "Os rexistros están pechados nesta instancia de CommaFeed"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr "API REST"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx
@@ -632,6 +704,14 @@ msgstr "Compartir sitios"
msgid "Shift"
msgstr "quendas"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Show entry menu (desktop)"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Show entry menu (mobile)"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Show feeds and categories with no unread entries"
msgstr "Mostrar fontes e categorías sen entradas sen ler"
@@ -642,6 +722,7 @@ msgstr "Mostrar axuda do atallo do teclado"
#: src/pages/auth/RegistrationPage.tsx
#: src/pages/auth/RegistrationPage.tsx
#: src/pages/WelcomePage.tsx
msgid "Sign up"
msgstr "Rexístrese"
@@ -654,6 +735,7 @@ msgstr "Algo malo pasou..."
msgid "Space"
msgstr "Espazo"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Star"
msgstr "estrela"
@@ -669,23 +751,29 @@ msgstr "estrela"
msgid "Subscribe"
msgstr "Subscríbete"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "URL de subscrición"
#: src/components/content/add/Subscribe.tsx
msgid "Subscribe to the feed"
msgstr "Subscríbete ao feed"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "URL de subscrición"
#: src/components/Alert.tsx
msgid "Success"
msgstr "Éxito"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Swipe header to the right"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to dark theme"
msgstr "Cambiar ao tema escuro"
#: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to light theme"
msgstr "Cambiar ao tema claro"
@@ -709,10 +797,15 @@ msgstr "alternar o estado de lectura da entrada actual"
msgid "Try out CommaFeed with the demo account: demo/demo"
msgstr "Proba CommaFeed coa conta de demostración: demo/demo"
#: src/pages/WelcomePage.tsx
msgid "Try the demo!"
msgstr ""
#: src/components/header/Header.tsx
msgid "Unread"
msgstr "Sen ler"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Unstar"
msgstr "Desestrela"
@@ -722,15 +815,15 @@ msgstr "Desestrela"
msgid "Unsubscribe"
msgstr "Cancelar a subscrición"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Nome de usuario"
#: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx
msgid "User Name or E-mail"
msgstr "Nome de usuario ou correo electrónico"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Nome de usuario"
#: src/components/Alert.tsx
msgid "Warning"
msgstr "Aviso"
@@ -743,6 +836,6 @@ 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/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "é necesario o ficheiro"
#: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh."
msgstr ""

View File

@@ -13,6 +13,14 @@ msgstr ""
"Language-Team: \n"
"Plural-Forms: \n"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "<0>CommaFeed is an open-source project. Sources are hosted on </0><1>GitHub</1>."
msgstr ""
#: src/pages/app/FeedDetailsPage.tsx
msgid "<0>Complete syntax is available </0><1>here</1>."
msgstr ""
@@ -21,14 +29,14 @@ msgstr ""
msgid "<0>Have an account?</0><1>Log in!</1>"
msgstr "<0>Van fiókja?</0><1>Jelentkezzen be!</1>"
#: src/pages/app/DonatePage.tsx
msgid "<0>Hey,</0><1>I'm Jérémie from Belgium and I've been working on CommaFeed in my free time for over 10 years now. Thanks for taking an interest in helping me continue supporting CommaFeed.</1>"
msgstr ""
#: src/pages/auth/LoginPage.tsx
msgid "<0>Need an account?</0><1>Sign up!</1>"
msgstr "<0>Fiókra van szüksége?</0><1>Regisztráljon!</1>"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "API kulcs"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/AboutPage.tsx
msgid "About"
@@ -75,6 +83,10 @@ msgstr "Az opml-fájl olyan XML-fájl, amely feed URL-címeket és kategóriáka
msgid "Analyze feed"
msgstr "Hírcsatorna elemzése"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "API kulcs"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Are you sure you want to delete category <0>{categoryName}</0>?"
msgstr "Biztosan törölni szeretné a(z) <0>{categoryName}</0> kategóriát?"
@@ -123,6 +135,7 @@ msgstr "Böngészőbővítések"
#: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx
@@ -150,10 +163,6 @@ msgstr "A jelszó megváltoztatása új API-kulcsot generál"
msgid "Check that the feed is working"
msgstr "Ellenőrizze, hogy a feed működik-e"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>."
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item"
msgstr "CommaFeed következő olvasatlan elem"
@@ -194,6 +203,18 @@ msgstr ""
msgid "Current password"
msgstr "Jelenlegi jelszó"
#: src/pages/app/SettingsPage.tsx
msgid "Custom code"
msgstr ""
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom CSS rules that will be applied"
msgstr ""
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom JS code that will be executed on page load"
msgstr ""
#: src/pages/admin/AdminUsersPage.tsx
msgid "Date created"
msgstr "Létrehozás dátuma"
@@ -202,15 +223,15 @@ msgstr "Létrehozás dátuma"
msgid "Delete"
msgstr "Törlés"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Kategória törlése"
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
msgid "Delete account"
msgstr "Fiók törlése"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Kategória törlése"
#: src/pages/admin/AdminUsersPage.tsx
msgid "Delete user"
msgstr "Felhasználó törlése"
@@ -219,11 +240,20 @@ msgstr "Felhasználó törlése"
msgid "Desc"
msgstr ""
#: src/components/header/ProfileMenu.tsx
msgid "Detailed"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/SettingsPage.tsx
msgid "Display"
msgstr "Kijelző"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/DonatePage.tsx
msgid "Donate"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "Download"
msgstr "Letöltés"
@@ -278,15 +308,28 @@ msgstr "Kiterjesztve"
msgid "Export your subscriptions and categories as an OPML file that can be imported in other feed reading services"
msgstr "Exportálja előfizetéseit és kategóriáit OPML-fájlként, amely importálható más feedolvasó szolgáltatásokba"
#: src/components/header/Header.tsx
#: src/pages/WelcomePage.tsx
msgid "Extension options"
msgstr ""
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "Hírcsatorna neve"
#: src/components/content/add/Subscribe.tsx
#: src/components/content/add/Subscribe.tsx
#: src/pages/app/FeedDetailsPage.tsx
msgid "Feed URL"
msgstr ""
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "Hírcsatorna neve"
#: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now"
msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "fájl szükséges"
#: src/pages/app/FeedDetailsPage.tsx
msgid "Filtering expression"
@@ -312,14 +355,18 @@ msgstr "Új API-kulcs létrehozása"
msgid "Generated feed url"
msgstr "Hírcsatorna generált URL-je"
#: src/pages/app/AboutPage.tsx
msgid "Go to the API documentation."
msgstr "Nyissa meg az API dokumentációját."
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Go to {0}"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Go to the All view"
msgstr "Lépjen az Összes nézetre"
#: src/pages/app/AboutPage.tsx
msgid "Go to the API documentation."
msgstr "Nyissa meg az API dokumentációját."
#: src/pages/app/AboutPage.tsx
msgid "Goodies"
msgstr "Jók"
@@ -336,10 +383,6 @@ msgstr "Ha nem üres, akkor 'igaz' vagy 'hamis' értékre kiértékelő kifejez
msgid "If you encounter an issue, please report it on the issues page of the GitHub project."
msgstr "Ha problémát tapasztal, kérjük, jelentse azt a GitHub projekt problémák oldalán."
#: src/pages/app/AboutPage.tsx
msgid "If you like this project, please consider a donation to support the developer and help cover the costs of keeping this website online."
msgstr "Ha tetszik ez a projekt, kérjük, fontolja meg adományozását a fejlesztő támogatására és a webhely online tartásának költségeinek fedezésére."
#: src/components/content/add/ImportOpml.tsx
msgid "Import"
msgstr "Importálás"
@@ -348,6 +391,7 @@ msgstr "Importálás"
msgid "In expanded view, scrolling through entries mark them as read"
msgstr "Kibontott nézetben a bejegyzések görgetése olvasottként jelöli meg őket"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Keep unread"
msgstr "Olvasatlan marad"
@@ -397,6 +441,7 @@ msgstr "Címkék betöltése..."
#: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx
#: src/pages/WelcomePage.tsx
msgid "Log in"
msgstr "Jelentkezzen be"
@@ -404,6 +449,10 @@ msgstr "Jelentkezzen be"
msgid "Logout"
msgstr "Kijelentkezés"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Long press"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/admin/AdminUsersPage.tsx
msgid "Manage users"
@@ -418,10 +467,12 @@ msgstr "Minden megjelölése olvasottként"
msgid "Mark all entries as read"
msgstr "Minden bejegyzés megjelölése olvasottként"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Mark as read"
msgstr "Megjelölés olvasottként"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Mark as read up to here"
msgstr "Megjelölés idáig olvasottként"
@@ -430,6 +481,10 @@ msgstr "Megjelölés idáig olvasottként"
msgid "Metrics"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Middle click"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Move the page down"
msgstr "Mozgassa le az oldalt"
@@ -482,19 +537,6 @@ msgstr "Nincs több bejegyzés"
msgid "Nothing found"
msgstr "Semmi sem található"
#: src/pages/app/AddPage.tsx
msgid "OPML"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "OPML export"
msgstr ""
#: src/components/content/add/ImportOpml.tsx
#: src/components/content/add/ImportOpml.tsx
msgid "OPML file"
msgstr "OPML fájl"
#: src/pages/app/AboutPage.tsx
msgid "Oldest first"
msgstr "A legidősebb első"
@@ -503,6 +545,10 @@ msgstr "A legidősebb első"
msgid "Oops!"
msgstr "Hoppá!"
#: src/components/header/Header.tsx
msgid "Open CommaFeed"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open current entry in a new tab"
msgstr "Az aktuális bejegyzés megnyitása új lapon"
@@ -515,6 +561,14 @@ msgstr "Az aktuális bejegyzés megnyitása egy új lapon a háttérben"
msgid "Open link"
msgstr "Link megnyitása"
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Open link in new background tab"
msgstr ""
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Open link in new tab"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open next entry"
msgstr "Következő bejegyzés megnyitása"
@@ -527,6 +581,19 @@ msgstr "Nyissa meg az előző bejegyzést"
msgid "Open/close current entry"
msgstr "Aktuális bejegyzés megnyitása/zárása"
#: src/pages/app/AddPage.tsx
msgid "OPML"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "OPML export"
msgstr ""
#: src/components/content/add/ImportOpml.tsx
#: src/components/content/add/ImportOpml.tsx
msgid "OPML file"
msgstr "OPML fájl"
#: src/pages/app/AboutPage.tsx
msgid "Order"
msgstr "Rendelés"
@@ -564,10 +631,6 @@ msgstr "Pozíció"
msgid "Profile"
msgstr "Profil"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/pages/auth/PasswordRecoveryPage.tsx
msgid "Recover password"
msgstr "Jelszó helyreállítása"
@@ -581,7 +644,16 @@ 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/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx
@@ -632,6 +704,14 @@ msgstr "Webhelyek megosztása"
msgid "Shift"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Show entry menu (desktop)"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Show entry menu (mobile)"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Show feeds and categories with no unread entries"
msgstr "Hírcsatornák és kategóriák megjelenítése olvasatlan bejegyzések nélkül"
@@ -642,6 +722,7 @@ msgstr "A billentyűparancsok súgójának megjelenítése"
#: src/pages/auth/RegistrationPage.tsx
#: src/pages/auth/RegistrationPage.tsx
#: src/pages/WelcomePage.tsx
msgid "Sign up"
msgstr "Regisztráljon"
@@ -654,6 +735,7 @@ msgstr "Valami rossz történt..."
msgid "Space"
msgstr ""
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Star"
msgstr "Csillag"
@@ -669,23 +751,29 @@ msgstr "Csillaggal megjelölve"
msgid "Subscribe"
msgstr "Feliratkozás"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "Feliratkozási URL"
#: src/components/content/add/Subscribe.tsx
msgid "Subscribe to the feed"
msgstr "Feliratkozás a hírfolyamra"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "Feliratkozási URL"
#: src/components/Alert.tsx
msgid "Success"
msgstr "Siker"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Swipe header to the right"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to dark theme"
msgstr "Váltás sötét témára"
#: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to light theme"
msgstr "Váltás világos témára"
@@ -709,10 +797,15 @@ msgstr "Az aktuális bejegyzés olvasási állapotának váltása"
msgid "Try out CommaFeed with the demo account: demo/demo"
msgstr "Próbálja ki a CommaFeed-et a demo fiókkal: demo/demo"
#: src/pages/WelcomePage.tsx
msgid "Try the demo!"
msgstr ""
#: src/components/header/Header.tsx
msgid "Unread"
msgstr "Olvasatlan"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Unstar"
msgstr ""
@@ -722,15 +815,15 @@ msgstr ""
msgid "Unsubscribe"
msgstr "Leiratkozás"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Felhasználónév"
#: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx
msgid "User Name or E-mail"
msgstr "Felhasználói név vagy e-mail cím"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Felhasználónév"
#: src/components/Alert.tsx
msgid "Warning"
msgstr "Figyelem"
@@ -743,6 +836,6 @@ 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/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "fájl szükséges"
#: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh."
msgstr ""

View File

@@ -13,6 +13,14 @@ msgstr ""
"Language-Team: \n"
"Plural-Forms: \n"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "<0>CommaFeed is an open-source project. Sources are hosted on </0><1>GitHub</1>."
msgstr ""
#: src/pages/app/FeedDetailsPage.tsx
msgid "<0>Complete syntax is available </0><1>here</1>."
msgstr ""
@@ -21,14 +29,14 @@ msgstr ""
msgid "<0>Have an account?</0><1>Log in!</1>"
msgstr "<0>Punya akun?</0><1>Masuk!</1>"
#: src/pages/app/DonatePage.tsx
msgid "<0>Hey,</0><1>I'm Jérémie from Belgium and I've been working on CommaFeed in my free time for over 10 years now. Thanks for taking an interest in helping me continue supporting CommaFeed.</1>"
msgstr ""
#: src/pages/auth/LoginPage.tsx
msgid "<0>Need an account?</0><1>Sign up!</1>"
msgstr "<0>Butuh akun?</0><1>Daftar!</1>"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "kunci API"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/AboutPage.tsx
msgid "About"
@@ -75,6 +83,10 @@ msgstr "File opml adalah file XML yang berisi URL dan kategori feed. "
msgid "Analyze feed"
msgstr "Analisis umpan"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "kunci API"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Are you sure you want to delete category <0>{categoryName}</0>?"
msgstr "Anda yakin ingin menghapus kategori <0>{categoryName}</0>?"
@@ -123,6 +135,7 @@ msgstr "Ekstensi peramban"
#: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx
@@ -150,10 +163,6 @@ msgstr "Mengubah kata sandi akan menghasilkan kunci API baru"
msgid "Check that the feed is working"
msgstr "Periksa apakah umpannya berfungsi"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>."
msgstr "CommaFeed adalah proyek sumber terbuka. "
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item"
msgstr "CommaFeed item yang belum dibaca berikutnya"
@@ -194,6 +203,18 @@ msgstr ""
msgid "Current password"
msgstr "Kata sandi saat ini"
#: src/pages/app/SettingsPage.tsx
msgid "Custom code"
msgstr ""
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom CSS rules that will be applied"
msgstr ""
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom JS code that will be executed on page load"
msgstr ""
#: src/pages/admin/AdminUsersPage.tsx
msgid "Date created"
msgstr "Tanggal dibuat"
@@ -202,15 +223,15 @@ msgstr "Tanggal dibuat"
msgid "Delete"
msgstr "Hapus"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Hapus Kategori"
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
msgid "Delete account"
msgstr "Hapus akun"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Hapus Kategori"
#: src/pages/admin/AdminUsersPage.tsx
msgid "Delete user"
msgstr "Hapus pengguna"
@@ -219,11 +240,20 @@ msgstr "Hapus pengguna"
msgid "Desc"
msgstr ""
#: src/components/header/ProfileMenu.tsx
msgid "Detailed"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/SettingsPage.tsx
msgid "Display"
msgstr "Tampilan"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/DonatePage.tsx
msgid "Donate"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "Download"
msgstr "Unduh"
@@ -278,15 +308,28 @@ msgstr "Diperluas"
msgid "Export your subscriptions and categories as an OPML file that can be imported in other feed reading services"
msgstr "Ekspor langganan dan kategori Anda sebagai file OPML yang dapat diimpor ke layanan membaca feed lainnya"
#: src/components/header/Header.tsx
#: src/pages/WelcomePage.tsx
msgid "Extension options"
msgstr ""
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "Nama umpan"
#: src/components/content/add/Subscribe.tsx
#: src/components/content/add/Subscribe.tsx
#: src/pages/app/FeedDetailsPage.tsx
msgid "Feed URL"
msgstr "URL Umpan"
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "Nama umpan"
#: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now"
msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "file diperlukan"
#: src/pages/app/FeedDetailsPage.tsx
msgid "Filtering expression"
@@ -312,14 +355,18 @@ msgstr "Buat kunci API baru"
msgid "Generated feed url"
msgstr "Url umpan yang dihasilkan"
#: src/pages/app/AboutPage.tsx
msgid "Go to the API documentation."
msgstr "Buka dokumentasi API."
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Go to {0}"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Go to the All view"
msgstr "Pergi ke tampilan Semua"
#: src/pages/app/AboutPage.tsx
msgid "Go to the API documentation."
msgstr "Buka dokumentasi API."
#: src/pages/app/AboutPage.tsx
msgid "Goodies"
msgstr "Pernak-pernik"
@@ -336,10 +383,6 @@ msgstr "Jika tidak kosong, ekspresi mengevaluasi ke 'benar' atau 'salah'. "
msgid "If you encounter an issue, please report it on the issues page of the GitHub project."
msgstr "Jika Anda mengalami masalah, harap laporkan di halaman masalah proyek GitHub."
#: src/pages/app/AboutPage.tsx
msgid "If you like this project, please consider a donation to support the developer and help cover the costs of keeping this website online."
msgstr "Jika Anda menyukai proyek ini, mohon pertimbangkan sumbangan untuk mendukung pengembang dan membantu menutupi biaya menjaga situs web ini tetap online."
#: src/components/content/add/ImportOpml.tsx
msgid "Import"
msgstr "Impor"
@@ -348,6 +391,7 @@ msgstr "Impor"
msgid "In expanded view, scrolling through entries mark them as read"
msgstr "Dalam tampilan yang diperluas, menggulir entri menandainya sebagai telah dibaca"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Keep unread"
msgstr "Tetap belum dibaca"
@@ -397,6 +441,7 @@ msgstr "Memuat tag..."
#: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx
#: src/pages/WelcomePage.tsx
msgid "Log in"
msgstr "Masuk"
@@ -404,6 +449,10 @@ msgstr "Masuk"
msgid "Logout"
msgstr "Keluar"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Long press"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/admin/AdminUsersPage.tsx
msgid "Manage users"
@@ -418,10 +467,12 @@ msgstr "Tandai semua sebagai telah dibaca"
msgid "Mark all entries as read"
msgstr "Tandai semua entri sebagai telah dibaca"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Mark as read"
msgstr "Tandai sebagai telah dibaca"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Mark as read up to here"
msgstr "Tandai sebagai telah dibaca sampai di sini"
@@ -430,6 +481,10 @@ msgstr "Tandai sebagai telah dibaca sampai di sini"
msgid "Metrics"
msgstr "Metrik"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Middle click"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Move the page down"
msgstr "Pindahkan halaman ke bawah"
@@ -482,19 +537,6 @@ msgstr "Tidak ada entri lagi"
msgid "Nothing found"
msgstr "Tidak ada yang ditemukan"
#: src/pages/app/AddPage.tsx
msgid "OPML"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "OPML export"
msgstr "ekspor OPML"
#: src/components/content/add/ImportOpml.tsx
#: src/components/content/add/ImportOpml.tsx
msgid "OPML file"
msgstr "file OPML"
#: src/pages/app/AboutPage.tsx
msgid "Oldest first"
msgstr "Tertua dulu"
@@ -503,6 +545,10 @@ msgstr "Tertua dulu"
msgid "Oops!"
msgstr "Ups!"
#: src/components/header/Header.tsx
msgid "Open CommaFeed"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open current entry in a new tab"
msgstr "Buka entri saat ini di tab baru"
@@ -515,6 +561,14 @@ msgstr "Buka entri saat ini di tab baru di latar belakang"
msgid "Open link"
msgstr "Buka tautan"
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Open link in new background tab"
msgstr ""
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Open link in new tab"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open next entry"
msgstr "Buka entri berikutnya"
@@ -527,6 +581,19 @@ msgstr "Buka entri sebelumnya"
msgid "Open/close current entry"
msgstr "Buka/tutup entri saat ini"
#: src/pages/app/AddPage.tsx
msgid "OPML"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "OPML export"
msgstr "ekspor OPML"
#: src/components/content/add/ImportOpml.tsx
#: src/components/content/add/ImportOpml.tsx
msgid "OPML file"
msgstr "file OPML"
#: src/pages/app/AboutPage.tsx
msgid "Order"
msgstr "Pesan"
@@ -564,10 +631,6 @@ msgstr "Posisi"
msgid "Profile"
msgstr "Profil"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/pages/auth/PasswordRecoveryPage.tsx
msgid "Recover password"
msgstr "Pulihkan kata sandi"
@@ -581,7 +644,16 @@ msgstr "Segarkan"
msgid "Registrations are closed on this CommaFeed instance"
msgstr "Pendaftaran ditutup pada instans CommaFeed ini"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx
@@ -632,6 +704,14 @@ msgstr "Berbagi situs"
msgid "Shift"
msgstr "Pergeseran"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Show entry menu (desktop)"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Show entry menu (mobile)"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Show feeds and categories with no unread entries"
msgstr "Tampilkan umpan dan kategori tanpa entri yang belum dibaca"
@@ -642,6 +722,7 @@ msgstr "Tampilkan bantuan pintasan keyboard"
#: src/pages/auth/RegistrationPage.tsx
#: src/pages/auth/RegistrationPage.tsx
#: src/pages/WelcomePage.tsx
msgid "Sign up"
msgstr "Daftar"
@@ -654,6 +735,7 @@ msgstr "Sesuatu yang buruk baru saja terjadi..."
msgid "Space"
msgstr "Luar Angkasa"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Star"
msgstr "Bintang"
@@ -669,23 +751,29 @@ msgstr "Berbintang"
msgid "Subscribe"
msgstr "Berlangganan"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "URL Berlangganan"
#: src/components/content/add/Subscribe.tsx
msgid "Subscribe to the feed"
msgstr "Berlangganan umpan"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "URL Berlangganan"
#: src/components/Alert.tsx
msgid "Success"
msgstr "Sukses"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Swipe header to the right"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to dark theme"
msgstr "Beralih ke tema gelap"
#: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to light theme"
msgstr "Beralih ke tema terang"
@@ -709,10 +797,15 @@ msgstr "Beralih status baca entri saat ini"
msgid "Try out CommaFeed with the demo account: demo/demo"
msgstr "Cobalah CommaFeed dengan akun demo: demo/demo"
#: src/pages/WelcomePage.tsx
msgid "Try the demo!"
msgstr ""
#: src/components/header/Header.tsx
msgid "Unread"
msgstr "Belum Dibaca"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Unstar"
msgstr "Hapus bintang"
@@ -722,15 +815,15 @@ msgstr "Hapus bintang"
msgid "Unsubscribe"
msgstr "Berhenti berlangganan"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Nama pengguna"
#: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx
msgid "User Name or E-mail"
msgstr "Nama Pengguna atau Email"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Nama pengguna"
#: src/components/Alert.tsx
msgid "Warning"
msgstr "Peringatan"
@@ -743,6 +836,6 @@ 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/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "file diperlukan"
#: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh."
msgstr ""

View File

@@ -13,6 +13,14 @@ msgstr ""
"Language-Team: \n"
"Plural-Forms: \n"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "<0>CommaFeed is an open-source project. Sources are hosted on </0><1>GitHub</1>."
msgstr ""
#: src/pages/app/FeedDetailsPage.tsx
msgid "<0>Complete syntax is available </0><1>here</1>."
msgstr ""
@@ -21,14 +29,14 @@ msgstr ""
msgid "<0>Have an account?</0><1>Log in!</1>"
msgstr "<0>Hai un account?</0><1>Accedi!</1>"
#: src/pages/app/DonatePage.tsx
msgid "<0>Hey,</0><1>I'm Jérémie from Belgium and I've been working on CommaFeed in my free time for over 10 years now. Thanks for taking an interest in helping me continue supporting CommaFeed.</1>"
msgstr ""
#: src/pages/auth/LoginPage.tsx
msgid "<0>Need an account?</0><1>Sign up!</1>"
msgstr "<0>Hai bisogno di un account?</0><1>Registrati!</1>"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "Chiave API"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/AboutPage.tsx
msgid "About"
@@ -75,6 +83,10 @@ msgstr "Un file opml è un file XML contenente URL e categorie di feed. "
msgid "Analyze feed"
msgstr "Analizza feed"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "Chiave API"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Are you sure you want to delete category <0>{categoryName}</0>?"
msgstr "Sei sicuro di voler eliminare la categoria <0>{categoryName}</0>?"
@@ -123,6 +135,7 @@ msgstr "Estensioni del browser"
#: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx
@@ -150,10 +163,6 @@ msgstr "La modifica della password genererà una nuova chiave API"
msgid "Check that the feed is working"
msgstr "Verifica che il feed funzioni"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>."
msgstr "CommaFeed è un progetto open source. "
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item"
msgstr "CommaFeed successivo elemento non letto"
@@ -194,6 +203,18 @@ msgstr "ctrl"
msgid "Current password"
msgstr "Password attuale"
#: src/pages/app/SettingsPage.tsx
msgid "Custom code"
msgstr ""
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom CSS rules that will be applied"
msgstr ""
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom JS code that will be executed on page load"
msgstr ""
#: src/pages/admin/AdminUsersPage.tsx
msgid "Date created"
msgstr "Data di creazione"
@@ -202,15 +223,15 @@ msgstr "Data di creazione"
msgid "Delete"
msgstr "Elimina"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Elimina categoria"
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
msgid "Delete account"
msgstr "Elimina account"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Elimina categoria"
#: src/pages/admin/AdminUsersPage.tsx
msgid "Delete user"
msgstr "Elimina utente"
@@ -219,11 +240,20 @@ msgstr "Elimina utente"
msgid "Desc"
msgstr ""
#: src/components/header/ProfileMenu.tsx
msgid "Detailed"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/SettingsPage.tsx
msgid "Display"
msgstr "Visualizzazione"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/DonatePage.tsx
msgid "Donate"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "Download"
msgstr "Scarica"
@@ -278,15 +308,28 @@ msgstr "Espanso"
msgid "Export your subscriptions and categories as an OPML file that can be imported in other feed reading services"
msgstr "Esporta le tue iscrizioni e categorie come file OPML che può essere importato in altri servizi di lettura feed"
#: src/components/header/Header.tsx
#: src/pages/WelcomePage.tsx
msgid "Extension options"
msgstr ""
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "Nome del feed"
#: src/components/content/add/Subscribe.tsx
#: src/components/content/add/Subscribe.tsx
#: src/pages/app/FeedDetailsPage.tsx
msgid "Feed URL"
msgstr "URL feed"
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "Nome del feed"
#: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now"
msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "è richiesto il file"
#: src/pages/app/FeedDetailsPage.tsx
msgid "Filtering expression"
@@ -312,14 +355,18 @@ msgstr "Genera nuova chiave API"
msgid "Generated feed url"
msgstr "URL feed generato"
#: src/pages/app/AboutPage.tsx
msgid "Go to the API documentation."
msgstr "Vai alla documentazione dell'API."
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Go to {0}"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Go to the All view"
msgstr "Vai alla vista Tutto"
#: src/pages/app/AboutPage.tsx
msgid "Go to the API documentation."
msgstr "Vai alla documentazione dell'API."
#: src/pages/app/AboutPage.tsx
msgid "Goodies"
msgstr "Chicche"
@@ -336,10 +383,6 @@ msgstr "Se non è vuota, un'espressione valutata come 'vero' o 'falso'. "
msgid "If you encounter an issue, please report it on the issues page of the GitHub project."
msgstr "Se riscontri un problema, segnalalo nella pagina dei problemi del progetto GitHub."
#: src/pages/app/AboutPage.tsx
msgid "If you like this project, please consider a donation to support the developer and help cover the costs of keeping this website online."
msgstr "Se ti piace questo progetto, prendi in considerazione una donazione per supportare lo sviluppatore e aiutare a coprire i costi per mantenere questo sito online."
#: src/components/content/add/ImportOpml.tsx
msgid "Import"
msgstr "Importa"
@@ -348,6 +391,7 @@ msgstr "Importa"
msgid "In expanded view, scrolling through entries mark them as read"
msgstr "Nella vista espansa, scorrendo le voci contrassegnale come lette"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Keep unread"
msgstr "Mantieni non letto"
@@ -397,6 +441,7 @@ msgstr "Caricamento tag..."
#: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx
#: src/pages/WelcomePage.tsx
msgid "Log in"
msgstr "Accedi"
@@ -404,6 +449,10 @@ msgstr "Accedi"
msgid "Logout"
msgstr "Disconnessione"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Long press"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/admin/AdminUsersPage.tsx
msgid "Manage users"
@@ -418,10 +467,12 @@ msgstr "Contrassegna tutto come letto"
msgid "Mark all entries as read"
msgstr "Contrassegna tutte le voci come lette"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Mark as read"
msgstr "Contrassegna come letto"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Mark as read up to here"
msgstr "Contrassegna come letto fino a qui"
@@ -430,6 +481,10 @@ msgstr "Contrassegna come letto fino a qui"
msgid "Metrics"
msgstr "Metriche"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Middle click"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Move the page down"
msgstr "Sposta la pagina in basso"
@@ -482,19 +537,6 @@ msgstr "Non ci sono più voci"
msgid "Nothing found"
msgstr "Non è stato trovato nulla"
#: src/pages/app/AddPage.tsx
msgid "OPML"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "OPML export"
msgstr "Esportazione OPML"
#: src/components/content/add/ImportOpml.tsx
#: src/components/content/add/ImportOpml.tsx
msgid "OPML file"
msgstr "file OPML"
#: src/pages/app/AboutPage.tsx
msgid "Oldest first"
msgstr "Il più vecchio prima"
@@ -503,6 +545,10 @@ msgstr "Il più vecchio prima"
msgid "Oops!"
msgstr "Ops!"
#: src/components/header/Header.tsx
msgid "Open CommaFeed"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open current entry in a new tab"
msgstr "Apri la voce corrente in una nuova scheda"
@@ -515,6 +561,14 @@ msgstr "Apri la voce corrente in una nuova scheda in background"
msgid "Open link"
msgstr "Apri collegamento"
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Open link in new background tab"
msgstr ""
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Open link in new tab"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open next entry"
msgstr "Apri voce successiva"
@@ -527,6 +581,19 @@ msgstr "Apri voce precedente"
msgid "Open/close current entry"
msgstr "Apri/chiudi voce corrente"
#: src/pages/app/AddPage.tsx
msgid "OPML"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "OPML export"
msgstr "Esportazione OPML"
#: src/components/content/add/ImportOpml.tsx
#: src/components/content/add/ImportOpml.tsx
msgid "OPML file"
msgstr "file OPML"
#: src/pages/app/AboutPage.tsx
msgid "Order"
msgstr "Ordine"
@@ -564,10 +631,6 @@ msgstr "Posizione"
msgid "Profile"
msgstr "Profilo"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr "API REST"
#: src/pages/auth/PasswordRecoveryPage.tsx
msgid "Recover password"
msgstr "Recupera password"
@@ -581,7 +644,16 @@ msgstr "Aggiorna"
msgid "Registrations are closed on this CommaFeed instance"
msgstr "Le registrazioni sono chiuse su questa istanza CommaFeed"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr "API REST"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx
@@ -632,6 +704,14 @@ msgstr "Condivisione di siti"
msgid "Shift"
msgstr "Cambio"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Show entry menu (desktop)"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Show entry menu (mobile)"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Show feeds and categories with no unread entries"
msgstr "Mostra feed e categorie senza voci non lette"
@@ -642,6 +722,7 @@ msgstr "Mostra la guida alle scorciatoie da tastiera"
#: src/pages/auth/RegistrationPage.tsx
#: src/pages/auth/RegistrationPage.tsx
#: src/pages/WelcomePage.tsx
msgid "Sign up"
msgstr "Iscriviti"
@@ -654,6 +735,7 @@ msgstr "È appena successo qualcosa di brutto..."
msgid "Space"
msgstr "Spazio"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Star"
msgstr "Stella"
@@ -669,23 +751,29 @@ msgstr "Speciali"
msgid "Subscribe"
msgstr "Iscriviti"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "URL di iscrizione"
#: src/components/content/add/Subscribe.tsx
msgid "Subscribe to the feed"
msgstr "Iscriviti al feed"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "URL di iscrizione"
#: src/components/Alert.tsx
msgid "Success"
msgstr "Successo"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Swipe header to the right"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to dark theme"
msgstr "Passa al tema scuro"
#: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to light theme"
msgstr "Passa al tema della luce"
@@ -709,10 +797,15 @@ msgstr "Commuta lo stato di lettura della voce corrente"
msgid "Try out CommaFeed with the demo account: demo/demo"
msgstr "Prova CommaFeed con il conto demo: demo/demo"
#: src/pages/WelcomePage.tsx
msgid "Try the demo!"
msgstr ""
#: src/components/header/Header.tsx
msgid "Unread"
msgstr "Non letto"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Unstar"
msgstr "Elimina le stelle"
@@ -722,15 +815,15 @@ msgstr "Elimina le stelle"
msgid "Unsubscribe"
msgstr "Annulla iscrizione"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Nome utente"
#: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx
msgid "User Name or E-mail"
msgstr "Nome utente o e-mail"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Nome utente"
#: src/components/Alert.tsx
msgid "Warning"
msgstr "Avviso"
@@ -743,6 +836,6 @@ 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/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "è richiesto il file"
#: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh."
msgstr ""

View File

@@ -13,6 +13,14 @@ msgstr ""
"Language-Team: \n"
"Plural-Forms: \n"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "<0>CommaFeed is an open-source project. Sources are hosted on </0><1>GitHub</1>."
msgstr ""
#: src/pages/app/FeedDetailsPage.tsx
msgid "<0>Complete syntax is available </0><1>here</1>."
msgstr ""
@@ -21,14 +29,14 @@ msgstr ""
msgid "<0>Have an account?</0><1>Log in!</1>"
msgstr "<0>アカウントをお持ちですか?</0><1>ログインしてください!</1>"
#: src/pages/app/DonatePage.tsx
msgid "<0>Hey,</0><1>I'm Jérémie from Belgium and I've been working on CommaFeed in my free time for over 10 years now. Thanks for taking an interest in helping me continue supporting CommaFeed.</1>"
msgstr ""
#: src/pages/auth/LoginPage.tsx
msgid "<0>Need an account?</0><1>Sign up!</1>"
msgstr "<0>アカウントが必要ですか?</0><1>サインアップ!</1>"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "APIキー"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/AboutPage.tsx
msgid "About"
@@ -75,6 +83,10 @@ msgstr "opml ファイルは、フィードの URL とカテゴリを含む XML
msgid "Analyze feed"
msgstr "フィードを分析する"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "APIキー"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Are you sure you want to delete category <0>{categoryName}</0>?"
msgstr "カテゴリ <0>{categoryName}</0> を削除してもよろしいですか?"
@@ -123,6 +135,7 @@ msgstr "ブラウザ拡張機能"
#: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx
@@ -150,10 +163,6 @@ msgstr "パスワードを変更すると、新しい API キーが生成され
msgid "Check that the feed is working"
msgstr "フィードが動作していることを確認してください"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>."
msgstr "CommaFeed はオープンソース プロジェクトです。"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item"
msgstr "次の未読アイテムをカンマフィード"
@@ -194,6 +203,18 @@ msgstr "コントロール"
msgid "Current password"
msgstr "現在のパスワード"
#: src/pages/app/SettingsPage.tsx
msgid "Custom code"
msgstr ""
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom CSS rules that will be applied"
msgstr ""
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom JS code that will be executed on page load"
msgstr ""
#: src/pages/admin/AdminUsersPage.tsx
msgid "Date created"
msgstr "作成日"
@@ -202,15 +223,15 @@ msgstr "作成日"
msgid "Delete"
msgstr "削除"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "カテゴリを削除"
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
msgid "Delete account"
msgstr "アカウント削除"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "カテゴリを削除"
#: src/pages/admin/AdminUsersPage.tsx
msgid "Delete user"
msgstr "ユーザーの削除"
@@ -219,11 +240,20 @@ msgstr "ユーザーの削除"
msgid "Desc"
msgstr "説明"
#: src/components/header/ProfileMenu.tsx
msgid "Detailed"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/SettingsPage.tsx
msgid "Display"
msgstr "ディスプレイ"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/DonatePage.tsx
msgid "Donate"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "Download"
msgstr "ダウンロード"
@@ -278,15 +308,28 @@ msgstr "拡張"
msgid "Export your subscriptions and categories as an OPML file that can be imported in other feed reading services"
msgstr "サブスクリプションとカテゴリを、他のフィード読み取りサービスにインポートできる OPML ファイルとしてエクスポートします"
#: src/components/header/Header.tsx
#: src/pages/WelcomePage.tsx
msgid "Extension options"
msgstr ""
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "フィード名"
#: src/components/content/add/Subscribe.tsx
#: src/components/content/add/Subscribe.tsx
#: src/pages/app/FeedDetailsPage.tsx
msgid "Feed URL"
msgstr "フィード URL"
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "フィード名"
#: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now"
msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "ファイルが必要です"
#: src/pages/app/FeedDetailsPage.tsx
msgid "Filtering expression"
@@ -312,14 +355,18 @@ msgstr "新しい API キーを生成する"
msgid "Generated feed url"
msgstr "生成されたフィード URL"
#: src/pages/app/AboutPage.tsx
msgid "Go to the API documentation."
msgstr "API ドキュメントに移動します。"
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Go to {0}"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Go to the All view"
msgstr "すべてのビューに移動"
#: src/pages/app/AboutPage.tsx
msgid "Go to the API documentation."
msgstr "API ドキュメントに移動します。"
#: src/pages/app/AboutPage.tsx
msgid "Goodies"
msgstr "グッディーズ"
@@ -336,10 +383,6 @@ msgstr "空でない場合は、'true' または 'false' に評価される式
msgid "If you encounter an issue, please report it on the issues page of the GitHub project."
msgstr "問題が発生した場合は、GitHub プロジェクトの問題ページで報告してください。"
#: src/pages/app/AboutPage.tsx
msgid "If you like this project, please consider a donation to support the developer and help cover the costs of keeping this website online."
msgstr "このプロジェクトが気に入った場合は、開発者をサポートし、この Web サイトをオンラインに維持するための費用を賄うための寄付を検討してください。"
#: src/components/content/add/ImportOpml.tsx
msgid "Import"
msgstr "インポート"
@@ -348,6 +391,7 @@ msgstr "インポート"
msgid "In expanded view, scrolling through entries mark them as read"
msgstr "展開ビューでエントリをスクロールすると、それらが既読としてマークされます"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Keep unread"
msgstr "未読のままにする"
@@ -397,6 +441,7 @@ msgstr "タグを読み込んでいます..."
#: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx
#: src/pages/WelcomePage.tsx
msgid "Log in"
msgstr "ログイン"
@@ -404,6 +449,10 @@ msgstr "ログイン"
msgid "Logout"
msgstr "ログアウト"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Long press"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/admin/AdminUsersPage.tsx
msgid "Manage users"
@@ -418,10 +467,12 @@ msgstr "すべて既読にする"
msgid "Mark all entries as read"
msgstr "すべてのエントリを既読にする"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Mark as read"
msgstr "既読にする"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Mark as read up to here"
msgstr "ここまで既読にする"
@@ -430,6 +481,10 @@ msgstr "ここまで既読にする"
msgid "Metrics"
msgstr "メトリクス"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Middle click"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Move the page down"
msgstr "ページを下に移動"
@@ -482,19 +537,6 @@ msgstr "これ以上エントリはありません"
msgid "Nothing found"
msgstr "何も見つかりませんでした"
#: src/pages/app/AddPage.tsx
msgid "OPML"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "OPML export"
msgstr "OPML エクスポート"
#: src/components/content/add/ImportOpml.tsx
#: src/components/content/add/ImportOpml.tsx
msgid "OPML file"
msgstr "OPMLファイル"
#: src/pages/app/AboutPage.tsx
msgid "Oldest first"
msgstr "古い順"
@@ -503,6 +545,10 @@ msgstr "古い順"
msgid "Oops!"
msgstr "おっと!"
#: src/components/header/Header.tsx
msgid "Open CommaFeed"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open current entry in a new tab"
msgstr "現在のエントリを新しいタブで開く"
@@ -515,6 +561,14 @@ msgstr "現在のエントリをバックグラウンドで新しいタブで開
msgid "Open link"
msgstr "リンクを開く"
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Open link in new background tab"
msgstr ""
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Open link in new tab"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open next entry"
msgstr "次のエントリを開く"
@@ -527,6 +581,19 @@ msgstr "前のエントリを開く"
msgid "Open/close current entry"
msgstr "現在のエントリを開く/閉じる"
#: src/pages/app/AddPage.tsx
msgid "OPML"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "OPML export"
msgstr "OPML エクスポート"
#: src/components/content/add/ImportOpml.tsx
#: src/components/content/add/ImportOpml.tsx
msgid "OPML file"
msgstr "OPMLファイル"
#: src/pages/app/AboutPage.tsx
msgid "Order"
msgstr "オーダー"
@@ -564,10 +631,6 @@ msgstr "位置"
msgid "Profile"
msgstr "プロフィール"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/pages/auth/PasswordRecoveryPage.tsx
msgid "Recover password"
msgstr "パスワードの回復"
@@ -581,7 +644,16 @@ msgstr "リフレッシュ"
msgid "Registrations are closed on this CommaFeed instance"
msgstr "この CommaFeed インスタンスの登録は終了しています"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx
@@ -632,6 +704,14 @@ msgstr "共有サイト"
msgid "Shift"
msgstr "シフト"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Show entry menu (desktop)"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Show entry menu (mobile)"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Show feeds and categories with no unread entries"
msgstr "未読エントリのないフィードとカテゴリを表示する"
@@ -642,6 +722,7 @@ msgstr "キーボード ショートカットのヘルプを表示"
#: src/pages/auth/RegistrationPage.tsx
#: src/pages/auth/RegistrationPage.tsx
#: src/pages/WelcomePage.tsx
msgid "Sign up"
msgstr "サインアップ"
@@ -654,6 +735,7 @@ msgstr "何か悪いことが起こった..."
msgid "Space"
msgstr "スペース"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Star"
msgstr "スター"
@@ -669,23 +751,29 @@ msgstr "スター付き"
msgid "Subscribe"
msgstr "購読する"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "購読URL"
#: src/components/content/add/Subscribe.tsx
msgid "Subscribe to the feed"
msgstr "フィードを購読する"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "購読URL"
#: src/components/Alert.tsx
msgid "Success"
msgstr "成功"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Swipe header to the right"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to dark theme"
msgstr "ダークテーマに切り替え"
#: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to light theme"
msgstr "ライトテーマに切り替え"
@@ -709,10 +797,15 @@ msgstr "現在のエントリの読み取りステータスを切り替えます
msgid "Try out CommaFeed with the demo account: demo/demo"
msgstr "デモアカウントで CommaFeed を試す: demo/demo"
#: src/pages/WelcomePage.tsx
msgid "Try the demo!"
msgstr ""
#: src/components/header/Header.tsx
msgid "Unread"
msgstr "未読"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Unstar"
msgstr "スターを外す"
@@ -722,15 +815,15 @@ msgstr "スターを外す"
msgid "Unsubscribe"
msgstr "退会"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "ユーザー名"
#: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx
msgid "User Name or E-mail"
msgstr "ユーザー名またはメールアドレス"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "ユーザー名"
#: src/components/Alert.tsx
msgid "Warning"
msgstr "警告"
@@ -743,6 +836,6 @@ 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/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "ファイルが必要です"
#: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh."
msgstr ""

View File

@@ -13,6 +13,14 @@ msgstr ""
"Language-Team: \n"
"Plural-Forms: \n"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "<0>CommaFeed is an open-source project. Sources are hosted on </0><1>GitHub</1>."
msgstr ""
#: src/pages/app/FeedDetailsPage.tsx
msgid "<0>Complete syntax is available </0><1>here</1>."
msgstr ""
@@ -21,14 +29,14 @@ msgstr ""
msgid "<0>Have an account?</0><1>Log in!</1>"
msgstr "<0>계정이 있습니까?</0><1>로그인하세요!</1>"
#: src/pages/app/DonatePage.tsx
msgid "<0>Hey,</0><1>I'm Jérémie from Belgium and I've been working on CommaFeed in my free time for over 10 years now. Thanks for taking an interest in helping me continue supporting CommaFeed.</1>"
msgstr ""
#: src/pages/auth/LoginPage.tsx
msgid "<0>Need an account?</0><1>Sign up!</1>"
msgstr "<0>계정이 필요하십니까?</0><1>가입하세요!</1>"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "API 키"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/AboutPage.tsx
msgid "About"
@@ -75,6 +83,10 @@ msgstr "opml 파일은 피드 URL과 카테고리를 포함하는 XML 파일입
msgid "Analyze feed"
msgstr "피드 분석"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "API 키"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Are you sure you want to delete category <0>{categoryName}</0>?"
msgstr "<0>{categoryName}</0> 카테고리를 삭제하시겠습니까?"
@@ -123,6 +135,7 @@ msgstr "브라우저 확장"
#: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx
@@ -150,10 +163,6 @@ msgstr "비밀번호를 변경하면 새 API 키가 생성됩니다."
msgid "Check that the feed is working"
msgstr "피드가 작동하는지 확인"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>."
msgstr "CommaFeed는 오픈 소스 프로젝트입니다. "
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item"
msgstr "다음 읽지 않은 항목을 쉼표로 피드"
@@ -194,6 +203,18 @@ msgstr "컨트롤"
msgid "Current password"
msgstr "현재 비밀번호"
#: src/pages/app/SettingsPage.tsx
msgid "Custom code"
msgstr ""
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom CSS rules that will be applied"
msgstr ""
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom JS code that will be executed on page load"
msgstr ""
#: src/pages/admin/AdminUsersPage.tsx
msgid "Date created"
msgstr "생성 날짜"
@@ -202,15 +223,15 @@ msgstr "생성 날짜"
msgid "Delete"
msgstr "삭제"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "카테고리 삭제"
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
msgid "Delete account"
msgstr "계정 삭제"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "카테고리 삭제"
#: src/pages/admin/AdminUsersPage.tsx
msgid "Delete user"
msgstr "사용자 삭제"
@@ -219,11 +240,20 @@ msgstr "사용자 삭제"
msgid "Desc"
msgstr "설명"
#: src/components/header/ProfileMenu.tsx
msgid "Detailed"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/SettingsPage.tsx
msgid "Display"
msgstr "디스플레이"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/DonatePage.tsx
msgid "Donate"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "Download"
msgstr "다운로드"
@@ -278,15 +308,28 @@ msgstr "확장"
msgid "Export your subscriptions and categories as an OPML file that can be imported in other feed reading services"
msgstr "구독 및 카테고리를 다른 피드 읽기 서비스에서 가져올 수 있는 OPML 파일로 내보내기"
#: src/components/header/Header.tsx
#: src/pages/WelcomePage.tsx
msgid "Extension options"
msgstr ""
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "피드 이름"
#: src/components/content/add/Subscribe.tsx
#: src/components/content/add/Subscribe.tsx
#: src/pages/app/FeedDetailsPage.tsx
msgid "Feed URL"
msgstr "피드 URL"
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "피드 이름"
#: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now"
msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "파일이 필요합니다"
#: src/pages/app/FeedDetailsPage.tsx
msgid "Filtering expression"
@@ -312,14 +355,18 @@ msgstr "새 API 키 생성"
msgid "Generated feed url"
msgstr "생성된 피드 URL"
#: src/pages/app/AboutPage.tsx
msgid "Go to the API documentation."
msgstr "API 문서로 이동합니다."
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Go to {0}"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Go to the All view"
msgstr "전체 보기로 이동"
#: src/pages/app/AboutPage.tsx
msgid "Go to the API documentation."
msgstr "API 문서로 이동합니다."
#: src/pages/app/AboutPage.tsx
msgid "Goodies"
msgstr "굿즈"
@@ -336,10 +383,6 @@ msgstr "비어 있지 않은 경우 'true' 또는 'false'로 평가되는 표현
msgid "If you encounter an issue, please report it on the issues page of the GitHub project."
msgstr "문제가 발생하면 GitHub 프로젝트의 문제 페이지에서 보고하세요."
#: src/pages/app/AboutPage.tsx
msgid "If you like this project, please consider a donation to support the developer and help cover the costs of keeping this website online."
msgstr "이 프로젝트가 마음에 들면 개발자를 지원하고 이 웹사이트를 온라인 상태로 유지하는 데 드는 비용을 충당하기 위한 기부를 고려하십시오."
#: src/components/content/add/ImportOpml.tsx
msgid "Import"
msgstr "가져오기"
@@ -348,6 +391,7 @@ msgstr "가져오기"
msgid "In expanded view, scrolling through entries mark them as read"
msgstr "확장 보기에서 항목을 스크롤하면 읽은 것으로 표시됩니다."
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Keep unread"
msgstr "읽지 않은 상태로 유지"
@@ -397,6 +441,7 @@ msgstr "태그 로드 중..."
#: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx
#: src/pages/WelcomePage.tsx
msgid "Log in"
msgstr "로그인"
@@ -404,6 +449,10 @@ msgstr "로그인"
msgid "Logout"
msgstr "로그아웃"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Long press"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/admin/AdminUsersPage.tsx
msgid "Manage users"
@@ -418,10 +467,12 @@ msgstr "모두 읽은 상태로 표시"
msgid "Mark all entries as read"
msgstr "모든 항목을 읽은 상태로 표시"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Mark as read"
msgstr "읽은 상태로 표시"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Mark as read up to here"
msgstr "여기까지 읽은 것으로 표시"
@@ -430,6 +481,10 @@ msgstr "여기까지 읽은 것으로 표시"
msgid "Metrics"
msgstr "메트릭스"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Middle click"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Move the page down"
msgstr "페이지를 아래로 이동"
@@ -482,19 +537,6 @@ msgstr "더 이상 항목이 없습니다"
msgid "Nothing found"
msgstr "아무것도 찾을 수 없습니다"
#: src/pages/app/AddPage.tsx
msgid "OPML"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "OPML export"
msgstr "OPML 내보내기"
#: src/components/content/add/ImportOpml.tsx
#: src/components/content/add/ImportOpml.tsx
msgid "OPML file"
msgstr "OPML 파일"
#: src/pages/app/AboutPage.tsx
msgid "Oldest first"
msgstr "가장 오래된 것부터"
@@ -503,6 +545,10 @@ msgstr "가장 오래된 것부터"
msgid "Oops!"
msgstr "앗!"
#: src/components/header/Header.tsx
msgid "Open CommaFeed"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open current entry in a new tab"
msgstr "새 탭에서 현재 항목 열기"
@@ -515,6 +561,14 @@ msgstr "배경의 새 탭에서 현재 항목 열기"
msgid "Open link"
msgstr "링크 열기"
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Open link in new background tab"
msgstr ""
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Open link in new tab"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open next entry"
msgstr "다음 항목 열기"
@@ -527,6 +581,19 @@ msgstr "이전 항목 열기"
msgid "Open/close current entry"
msgstr "현재 항목 열기/닫기"
#: src/pages/app/AddPage.tsx
msgid "OPML"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "OPML export"
msgstr "OPML 내보내기"
#: src/components/content/add/ImportOpml.tsx
#: src/components/content/add/ImportOpml.tsx
msgid "OPML file"
msgstr "OPML 파일"
#: src/pages/app/AboutPage.tsx
msgid "Order"
msgstr "주문"
@@ -564,10 +631,6 @@ msgstr "위치"
msgid "Profile"
msgstr "프로필"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/pages/auth/PasswordRecoveryPage.tsx
msgid "Recover password"
msgstr "비밀번호 복구"
@@ -581,7 +644,16 @@ msgstr "새로 고침"
msgid "Registrations are closed on this CommaFeed instance"
msgstr "이 CommaFeed 인스턴스에 대한 등록이 마감되었습니다."
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx
@@ -632,6 +704,14 @@ msgstr "사이트 공유"
msgid "Shift"
msgstr "시프트"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Show entry menu (desktop)"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Show entry menu (mobile)"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Show feeds and categories with no unread entries"
msgstr "읽지 않은 항목이 없는 피드 및 카테고리 표시"
@@ -642,6 +722,7 @@ msgstr "키보드 단축키 도움말 표시"
#: src/pages/auth/RegistrationPage.tsx
#: src/pages/auth/RegistrationPage.tsx
#: src/pages/WelcomePage.tsx
msgid "Sign up"
msgstr "가입"
@@ -654,6 +735,7 @@ msgstr "뭔가 안 좋은 일이 일어났어..."
msgid "Space"
msgstr "우주"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Star"
msgstr "스타"
@@ -669,23 +751,29 @@ msgstr "별표"
msgid "Subscribe"
msgstr "구독"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "구독 URL"
#: src/components/content/add/Subscribe.tsx
msgid "Subscribe to the feed"
msgstr "피드 구독"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "구독 URL"
#: src/components/Alert.tsx
msgid "Success"
msgstr "성공"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Swipe header to the right"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to dark theme"
msgstr "어두운 테마로 전환"
#: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to light theme"
msgstr "밝은 테마로 전환"
@@ -709,10 +797,15 @@ msgstr "현재 항목의 읽기 상태 전환"
msgid "Try out CommaFeed with the demo account: demo/demo"
msgstr "데모 계정으로 CommaFeed를 사용해 보세요: demo/demo"
#: src/pages/WelcomePage.tsx
msgid "Try the demo!"
msgstr ""
#: src/components/header/Header.tsx
msgid "Unread"
msgstr "읽지 않음"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Unstar"
msgstr "별표 제거"
@@ -722,15 +815,15 @@ msgstr "별표 제거"
msgid "Unsubscribe"
msgstr "구독 취소"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "사용자 이름"
#: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx
msgid "User Name or E-mail"
msgstr "사용자 이름 또는 이메일"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "사용자 이름"
#: src/components/Alert.tsx
msgid "Warning"
msgstr "경고"
@@ -743,6 +836,6 @@ 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/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "파일이 필요합니다"
#: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh."
msgstr ""

View File

@@ -13,6 +13,14 @@ msgstr ""
"Language-Team: \n"
"Plural-Forms: \n"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "<0>CommaFeed is an open-source project. Sources are hosted on </0><1>GitHub</1>."
msgstr ""
#: src/pages/app/FeedDetailsPage.tsx
msgid "<0>Complete syntax is available </0><1>here</1>."
msgstr ""
@@ -21,14 +29,14 @@ msgstr ""
msgid "<0>Have an account?</0><1>Log in!</1>"
msgstr "<0>Ada akaun?</0><1>Log masuk!</1>"
#: src/pages/app/DonatePage.tsx
msgid "<0>Hey,</0><1>I'm Jérémie from Belgium and I've been working on CommaFeed in my free time for over 10 years now. Thanks for taking an interest in helping me continue supporting CommaFeed.</1>"
msgstr ""
#: src/pages/auth/LoginPage.tsx
msgid "<0>Need an account?</0><1>Sign up!</1>"
msgstr "<0>Perlukan akaun?</0><1>Daftar!</1>"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "Kunci API"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/AboutPage.tsx
msgid "About"
@@ -75,6 +83,10 @@ msgstr "Fail opml ialah fail XML yang mengandungi URL suapan dan kategori. "
msgid "Analyze feed"
msgstr "Menganalisis suapan"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "Kunci API"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Are you sure you want to delete category <0>{categoryName}</0>?"
msgstr "Adakah anda pasti mahu memadamkan kategori <0>{categoryName}</0>?"
@@ -123,6 +135,7 @@ msgstr "Peluasan penyemak imbas"
#: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx
@@ -150,10 +163,6 @@ msgstr "Menukar kata laluan akan menjana kunci API baharu"
msgid "Check that the feed is working"
msgstr "Semak sama ada suapan berfungsi"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>."
msgstr "CommaFeed ialah projek sumber terbuka. "
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item"
msgstr "CommaFeed item belum dibaca seterusnya"
@@ -194,6 +203,18 @@ msgstr ""
msgid "Current password"
msgstr "Kata laluan semasa"
#: src/pages/app/SettingsPage.tsx
msgid "Custom code"
msgstr ""
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom CSS rules that will be applied"
msgstr ""
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom JS code that will be executed on page load"
msgstr ""
#: src/pages/admin/AdminUsersPage.tsx
msgid "Date created"
msgstr "Tarikh dibuat"
@@ -202,15 +223,15 @@ msgstr "Tarikh dibuat"
msgid "Delete"
msgstr "Padam"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Padamkan Kategori"
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
msgid "Delete account"
msgstr "Padam akaun"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Padamkan Kategori"
#: src/pages/admin/AdminUsersPage.tsx
msgid "Delete user"
msgstr "Padam pengguna"
@@ -219,11 +240,20 @@ msgstr "Padam pengguna"
msgid "Desc"
msgstr "Dec"
#: src/components/header/ProfileMenu.tsx
msgid "Detailed"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/SettingsPage.tsx
msgid "Display"
msgstr "Paparan"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/DonatePage.tsx
msgid "Donate"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "Download"
msgstr "Muat turun"
@@ -278,15 +308,28 @@ msgstr "Dikembangkan"
msgid "Export your subscriptions and categories as an OPML file that can be imported in other feed reading services"
msgstr "Eksport langganan dan kategori anda sebagai fail OPML yang boleh diimport dalam perkhidmatan membaca suapan lain"
#: src/components/header/Header.tsx
#: src/pages/WelcomePage.tsx
msgid "Extension options"
msgstr ""
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "Nama suapan"
#: src/components/content/add/Subscribe.tsx
#: src/components/content/add/Subscribe.tsx
#: src/pages/app/FeedDetailsPage.tsx
msgid "Feed URL"
msgstr "URL Suapan"
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "Nama suapan"
#: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now"
msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "fail diperlukan"
#: src/pages/app/FeedDetailsPage.tsx
msgid "Filtering expression"
@@ -312,14 +355,18 @@ msgstr "Jana kunci API baharu"
msgid "Generated feed url"
msgstr "Url suapan yang dijana"
#: src/pages/app/AboutPage.tsx
msgid "Go to the API documentation."
msgstr "Pergi ke dokumentasi API."
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Go to {0}"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Go to the All view"
msgstr "Pergi ke paparan Semua"
#: src/pages/app/AboutPage.tsx
msgid "Go to the API documentation."
msgstr "Pergi ke dokumentasi API."
#: src/pages/app/AboutPage.tsx
msgid "Goodies"
msgstr ""
@@ -336,10 +383,6 @@ msgstr "Jika tidak kosong, ungkapan yang menilai kepada 'benar' atau 'palsu'. "
msgid "If you encounter an issue, please report it on the issues page of the GitHub project."
msgstr "Jika anda menghadapi isu, sila laporkan pada halaman isu projek GitHub."
#: src/pages/app/AboutPage.tsx
msgid "If you like this project, please consider a donation to support the developer and help cover the costs of keeping this website online."
msgstr "Jika anda menyukai projek ini, sila pertimbangkan derma untuk menyokong pembangun dan membantu menampung kos mengekalkan tapak web ini dalam talian."
#: src/components/content/add/ImportOpml.tsx
msgid "Import"
msgstr ""
@@ -348,6 +391,7 @@ msgstr ""
msgid "In expanded view, scrolling through entries mark them as read"
msgstr "Dalam paparan yang diperluas, menatal melalui entri menandakannya sebagai dibaca"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Keep unread"
msgstr "Teruskan tidak dibaca"
@@ -397,6 +441,7 @@ msgstr "Memuatkan tag..."
#: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx
#: src/pages/WelcomePage.tsx
msgid "Log in"
msgstr "Log masuk"
@@ -404,6 +449,10 @@ msgstr "Log masuk"
msgid "Logout"
msgstr "Log Keluar"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Long press"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/admin/AdminUsersPage.tsx
msgid "Manage users"
@@ -418,10 +467,12 @@ msgstr "Tandai semua sebagai dibaca"
msgid "Mark all entries as read"
msgstr "Tandai semua entri sebagai dibaca"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Mark as read"
msgstr "Tandakan sebagai dibaca"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Mark as read up to here"
msgstr "Tandai sebagai dibaca sehingga di sini"
@@ -430,6 +481,10 @@ msgstr "Tandai sebagai dibaca sehingga di sini"
msgid "Metrics"
msgstr "Metrik"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Middle click"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Move the page down"
msgstr "Gerakkan halaman ke bawah"
@@ -482,19 +537,6 @@ msgstr "Tiada lagi penyertaan"
msgid "Nothing found"
msgstr "Tiada apa-apa dijumpai"
#: src/pages/app/AddPage.tsx
msgid "OPML"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "OPML export"
msgstr "OPML eksport"
#: src/components/content/add/ImportOpml.tsx
#: src/components/content/add/ImportOpml.tsx
msgid "OPML file"
msgstr "Fail OPML"
#: src/pages/app/AboutPage.tsx
msgid "Oldest first"
msgstr "Tertua dahulu"
@@ -503,6 +545,10 @@ msgstr "Tertua dahulu"
msgid "Oops!"
msgstr "Aduh!"
#: src/components/header/Header.tsx
msgid "Open CommaFeed"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open current entry in a new tab"
msgstr "Buka entri semasa dalam tab baharu"
@@ -515,6 +561,14 @@ msgstr "Buka entri semasa dalam tab baharu di latar belakang"
msgid "Open link"
msgstr "Buka pautan"
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Open link in new background tab"
msgstr ""
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Open link in new tab"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open next entry"
msgstr "Buka entri seterusnya"
@@ -527,6 +581,19 @@ msgstr "Buka entri sebelumnya"
msgid "Open/close current entry"
msgstr "Buka/tutup entri semasa"
#: src/pages/app/AddPage.tsx
msgid "OPML"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "OPML export"
msgstr "OPML eksport"
#: src/components/content/add/ImportOpml.tsx
#: src/components/content/add/ImportOpml.tsx
msgid "OPML file"
msgstr "Fail OPML"
#: src/pages/app/AboutPage.tsx
msgid "Order"
msgstr "Perintah"
@@ -564,10 +631,6 @@ msgstr "Kedudukan"
msgid "Profile"
msgstr "Profil"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr "REHAT API"
#: src/pages/auth/PasswordRecoveryPage.tsx
msgid "Recover password"
msgstr "Pulihkan kata laluan"
@@ -581,7 +644,16 @@ msgstr "Muat semula"
msgid "Registrations are closed on this CommaFeed instance"
msgstr "Pendaftaran ditutup pada contoh CommaFeed ini"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr "REHAT API"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx
@@ -632,6 +704,14 @@ msgstr "Berkongsi tapak"
msgid "Shift"
msgstr "Anjakan"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Show entry menu (desktop)"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Show entry menu (mobile)"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Show feeds and categories with no unread entries"
msgstr "Tunjukkan suapan dan kategori tanpa entri yang belum dibaca"
@@ -642,6 +722,7 @@ msgstr "Tunjukkan bantuan pintasan papan kekunci"
#: src/pages/auth/RegistrationPage.tsx
#: src/pages/auth/RegistrationPage.tsx
#: src/pages/WelcomePage.tsx
msgid "Sign up"
msgstr "Daftar"
@@ -654,6 +735,7 @@ msgstr "Sesuatu yang buruk baru saja berlaku..."
msgid "Space"
msgstr "Angkasa"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Star"
msgstr "Bintang"
@@ -669,23 +751,29 @@ msgstr "Dibintangi"
msgid "Subscribe"
msgstr "Langgan"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "Langgan URL"
#: src/components/content/add/Subscribe.tsx
msgid "Subscribe to the feed"
msgstr "Langgan suapan"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "Langgan URL"
#: src/components/Alert.tsx
msgid "Success"
msgstr "Kejayaan"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Swipe header to the right"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to dark theme"
msgstr "Tukar kepada tema gelap"
#: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to light theme"
msgstr "Tukar kepada tema cahaya"
@@ -709,10 +797,15 @@ msgstr "Togol status bacaan entri semasa"
msgid "Try out CommaFeed with the demo account: demo/demo"
msgstr "Cuba CommaFeed dengan akaun demo: demo/demo"
#: src/pages/WelcomePage.tsx
msgid "Try the demo!"
msgstr ""
#: src/components/header/Header.tsx
msgid "Unread"
msgstr "Belum dibaca"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Unstar"
msgstr "Nyahbintang"
@@ -722,15 +815,15 @@ msgstr "Nyahbintang"
msgid "Unsubscribe"
msgstr "Nyahlanggan"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Nama pengguna"
#: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx
msgid "User Name or E-mail"
msgstr "Nama Pengguna atau E-mel"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Nama pengguna"
#: src/components/Alert.tsx
msgid "Warning"
msgstr "Amaran"
@@ -743,6 +836,6 @@ 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/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "fail diperlukan"
#: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh."
msgstr ""

View File

@@ -13,6 +13,14 @@ msgstr ""
"Language-Team: \n"
"Plural-Forms: \n"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "<0>CommaFeed is an open-source project. Sources are hosted on </0><1>GitHub</1>."
msgstr ""
#: src/pages/app/FeedDetailsPage.tsx
msgid "<0>Complete syntax is available </0><1>here</1>."
msgstr ""
@@ -21,14 +29,14 @@ msgstr ""
msgid "<0>Have an account?</0><1>Log in!</1>"
msgstr "<0>Har du en konto?</0><1>Logg på!</1>"
#: src/pages/app/DonatePage.tsx
msgid "<0>Hey,</0><1>I'm Jérémie from Belgium and I've been working on CommaFeed in my free time for over 10 years now. Thanks for taking an interest in helping me continue supporting CommaFeed.</1>"
msgstr ""
#: src/pages/auth/LoginPage.tsx
msgid "<0>Need an account?</0><1>Sign up!</1>"
msgstr "<0>Trenger du en konto?</0><1>Registrer deg!</1>"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "API-nøkkel"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/AboutPage.tsx
msgid "About"
@@ -75,6 +83,10 @@ msgstr "En opml-fil er en XML-fil som inneholder feed-URLer og kategorier. "
msgid "Analyze feed"
msgstr "Analyser feed"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "API-nøkkel"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Are you sure you want to delete category <0>{categoryName}</0>?"
msgstr "Er du sikker på at du vil slette kategori <0>{categoryName}</0>?"
@@ -123,6 +135,7 @@ msgstr "Nettleserutvidelser"
#: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx
@@ -150,10 +163,6 @@ msgstr "Endring av passord vil generere en ny API-nøkkel"
msgid "Check that the feed is working"
msgstr "Sjekk at feeden fungerer"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>."
msgstr "CommaFeed er et åpen kildekode-prosjekt. "
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item"
msgstr "CommaFeed neste uleste element"
@@ -194,6 +203,18 @@ msgstr ""
msgid "Current password"
msgstr "Gjeldende passord"
#: src/pages/app/SettingsPage.tsx
msgid "Custom code"
msgstr ""
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom CSS rules that will be applied"
msgstr ""
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom JS code that will be executed on page load"
msgstr ""
#: src/pages/admin/AdminUsersPage.tsx
msgid "Date created"
msgstr "Dato opprettet"
@@ -202,15 +223,15 @@ msgstr "Dato opprettet"
msgid "Delete"
msgstr "Slett"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Slett kategori"
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
msgid "Delete account"
msgstr "Slett konto"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Slett kategori"
#: src/pages/admin/AdminUsersPage.tsx
msgid "Delete user"
msgstr "Slett bruker"
@@ -219,11 +240,20 @@ msgstr "Slett bruker"
msgid "Desc"
msgstr ""
#: src/components/header/ProfileMenu.tsx
msgid "Detailed"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/SettingsPage.tsx
msgid "Display"
msgstr "Visning"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/DonatePage.tsx
msgid "Donate"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "Download"
msgstr "Last ned"
@@ -278,15 +308,28 @@ msgstr "Utvidet"
msgid "Export your subscriptions and categories as an OPML file that can be imported in other feed reading services"
msgstr "Eksporter abonnementene og kategoriene dine som en OPML-fil som kan importeres i andre feedlesetjenester"
#: src/components/header/Header.tsx
#: src/pages/WelcomePage.tsx
msgid "Extension options"
msgstr ""
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "Feednavn"
#: src/components/content/add/Subscribe.tsx
#: src/components/content/add/Subscribe.tsx
#: src/pages/app/FeedDetailsPage.tsx
msgid "Feed URL"
msgstr "Feed-URL"
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "Feednavn"
#: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now"
msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "fil kreves"
#: src/pages/app/FeedDetailsPage.tsx
msgid "Filtering expression"
@@ -312,14 +355,18 @@ msgstr "Generer ny API-nøkkel"
msgid "Generated feed url"
msgstr "Generert feed-url"
#: src/pages/app/AboutPage.tsx
msgid "Go to the API documentation."
msgstr "Gå til API-dokumentasjonen."
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Go to {0}"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Go to the All view"
msgstr "Gå til visningen Alle"
#: src/pages/app/AboutPage.tsx
msgid "Go to the API documentation."
msgstr "Gå til API-dokumentasjonen."
#: src/pages/app/AboutPage.tsx
msgid "Goodies"
msgstr "Godbiter"
@@ -336,10 +383,6 @@ msgstr "Hvis det ikke er tomt, et uttrykk som vurderes til 'sant' eller 'usant'.
msgid "If you encounter an issue, please report it on the issues page of the GitHub project."
msgstr "Hvis du støter på et problem, vennligst rapporter det på problemsiden til GitHub-prosjektet."
#: src/pages/app/AboutPage.tsx
msgid "If you like this project, please consider a donation to support the developer and help cover the costs of keeping this website online."
msgstr "Hvis du liker dette prosjektet, kan du vurdere en donasjon for å støtte utvikleren og hjelpe til med å dekke kostnadene ved å holde denne nettsiden online."
#: src/components/content/add/ImportOpml.tsx
msgid "Import"
msgstr ""
@@ -348,6 +391,7 @@ msgstr ""
msgid "In expanded view, scrolling through entries mark them as read"
msgstr "I utvidet visning merker du dem som lest ved å rulle gjennom oppføringer"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Keep unread"
msgstr "Behold ulest"
@@ -397,6 +441,7 @@ msgstr "Laster tagger..."
#: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx
#: src/pages/WelcomePage.tsx
msgid "Log in"
msgstr "Logg inn"
@@ -404,6 +449,10 @@ msgstr "Logg inn"
msgid "Logout"
msgstr "Logg ut"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Long press"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/admin/AdminUsersPage.tsx
msgid "Manage users"
@@ -418,10 +467,12 @@ msgstr "Merk alle som lest"
msgid "Mark all entries as read"
msgstr "Merk alle oppføringer som lest"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Mark as read"
msgstr "Merk som lest"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Mark as read up to here"
msgstr "Merk som lest frem til her"
@@ -430,6 +481,10 @@ msgstr "Merk som lest frem til her"
msgid "Metrics"
msgstr "Beregninger"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Middle click"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Move the page down"
msgstr "Flytt siden ned"
@@ -482,19 +537,6 @@ msgstr "Ingen flere oppføringer"
msgid "Nothing found"
msgstr "Ingenting funnet"
#: src/pages/app/AddPage.tsx
msgid "OPML"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "OPML export"
msgstr "OPML eksport"
#: src/components/content/add/ImportOpml.tsx
#: src/components/content/add/ImportOpml.tsx
msgid "OPML file"
msgstr "OPML-fil"
#: src/pages/app/AboutPage.tsx
msgid "Oldest first"
msgstr "Eldste først"
@@ -503,6 +545,10 @@ msgstr "Eldste først"
msgid "Oops!"
msgstr "Beklager!"
#: src/components/header/Header.tsx
msgid "Open CommaFeed"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open current entry in a new tab"
msgstr "Åpne gjeldende oppføring i en ny fane"
@@ -515,6 +561,14 @@ msgstr "Åpne gjeldende oppføring i en ny fane i bakgrunnen"
msgid "Open link"
msgstr "Åpen lenke"
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Open link in new background tab"
msgstr ""
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Open link in new tab"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open next entry"
msgstr "Åpne neste oppføring"
@@ -527,6 +581,19 @@ msgstr "Åpne forrige oppføring"
msgid "Open/close current entry"
msgstr "Åpne/lukk gjeldende oppføring"
#: src/pages/app/AddPage.tsx
msgid "OPML"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "OPML export"
msgstr "OPML eksport"
#: src/components/content/add/ImportOpml.tsx
#: src/components/content/add/ImportOpml.tsx
msgid "OPML file"
msgstr "OPML-fil"
#: src/pages/app/AboutPage.tsx
msgid "Order"
msgstr "Ord"
@@ -564,10 +631,6 @@ msgstr "Posisjon"
msgid "Profile"
msgstr "Profil"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/pages/auth/PasswordRecoveryPage.tsx
msgid "Recover password"
msgstr "Gjenopprett passord"
@@ -581,7 +644,16 @@ msgstr "Oppdater"
msgid "Registrations are closed on this CommaFeed instance"
msgstr "Registreringer er stengt på denne CommaFeed-forekomsten"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx
@@ -632,6 +704,14 @@ msgstr "Delingssider"
msgid "Shift"
msgstr "Skift"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Show entry menu (desktop)"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Show entry menu (mobile)"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Show feeds and categories with no unread entries"
msgstr "Vis feeder og kategorier uten uleste oppføringer"
@@ -642,6 +722,7 @@ msgstr "Vis hurtigtasthjelp"
#: src/pages/auth/RegistrationPage.tsx
#: src/pages/auth/RegistrationPage.tsx
#: src/pages/WelcomePage.tsx
msgid "Sign up"
msgstr "Meld deg på"
@@ -654,6 +735,7 @@ msgstr "Noe ille skjedde akkurat..."
msgid "Space"
msgstr ""
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Star"
msgstr "Stjerne"
@@ -669,23 +751,29 @@ msgstr "Stjerne"
msgid "Subscribe"
msgstr "Abonner"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "Abonner URL"
#: src/components/content/add/Subscribe.tsx
msgid "Subscribe to the feed"
msgstr "Abonner på feeden"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "Abonner URL"
#: src/components/Alert.tsx
msgid "Success"
msgstr "Suksess"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Swipe header to the right"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to dark theme"
msgstr "Bytt til mørkt tema"
#: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to light theme"
msgstr "Bytt til lystema"
@@ -709,10 +797,15 @@ msgstr "Veksle lesestatus for gjeldende oppføring"
msgid "Try out CommaFeed with the demo account: demo/demo"
msgstr "Prøv CommaFeed med demokontoen: demo/demo"
#: src/pages/WelcomePage.tsx
msgid "Try the demo!"
msgstr ""
#: src/components/header/Header.tsx
msgid "Unread"
msgstr "Ulest"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Unstar"
msgstr "Fjern stjerne"
@@ -722,15 +815,15 @@ msgstr "Fjern stjerne"
msgid "Unsubscribe"
msgstr "Avslutt abonnementet"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Brukernavn"
#: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx
msgid "User Name or E-mail"
msgstr "Brukernavn eller e-post"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Brukernavn"
#: src/components/Alert.tsx
msgid "Warning"
msgstr "Advarsel"
@@ -743,6 +836,6 @@ 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/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "fil kreves"
#: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh."
msgstr ""

View File

@@ -13,6 +13,14 @@ msgstr ""
"Language-Team: \n"
"Plural-Forms: \n"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "<0>CommaFeed is an open-source project. Sources are hosted on </0><1>GitHub</1>."
msgstr ""
#: src/pages/app/FeedDetailsPage.tsx
msgid "<0>Complete syntax is available </0><1>here</1>."
msgstr ""
@@ -21,14 +29,14 @@ msgstr ""
msgid "<0>Have an account?</0><1>Log in!</1>"
msgstr "<0>Heb je een account?</0><1>Log in!</1>"
#: src/pages/app/DonatePage.tsx
msgid "<0>Hey,</0><1>I'm Jérémie from Belgium and I've been working on CommaFeed in my free time for over 10 years now. Thanks for taking an interest in helping me continue supporting CommaFeed.</1>"
msgstr ""
#: src/pages/auth/LoginPage.tsx
msgid "<0>Need an account?</0><1>Sign up!</1>"
msgstr "<0>Een account nodig?</0><1>Meld je aan!</1>"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "API-sleutel"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/AboutPage.tsx
msgid "About"
@@ -75,6 +83,10 @@ msgstr "Een opml-bestand is een XML-bestand met feed-URL's en categorieën. "
msgid "Analyze feed"
msgstr "Analyseer feed"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "API-sleutel"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Are you sure you want to delete category <0>{categoryName}</0>?"
msgstr "Weet je zeker dat je categorie <0>{categoryName}</0> wilt verwijderen?"
@@ -123,6 +135,7 @@ msgstr "Browserextensies"
#: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx
@@ -150,10 +163,6 @@ msgstr "Het wijzigen van het wachtwoord genereert een nieuwe API-sleutel"
msgid "Check that the feed is working"
msgstr "Controleer of de feed werkt"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>."
msgstr "CommaFeed is een open-sourceproject. "
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item"
msgstr "CommaFeed volgende ongelezen item"
@@ -194,6 +203,18 @@ msgstr ""
msgid "Current password"
msgstr "Huidig wachtwoord"
#: src/pages/app/SettingsPage.tsx
msgid "Custom code"
msgstr ""
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom CSS rules that will be applied"
msgstr ""
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom JS code that will be executed on page load"
msgstr ""
#: src/pages/admin/AdminUsersPage.tsx
msgid "Date created"
msgstr "Datum gemaakt"
@@ -202,15 +223,15 @@ msgstr "Datum gemaakt"
msgid "Delete"
msgstr "Verwijderen"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Categorie verwijderen"
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
msgid "Delete account"
msgstr "Account verwijderen"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Categorie verwijderen"
#: src/pages/admin/AdminUsersPage.tsx
msgid "Delete user"
msgstr "Gebruiker verwijderen"
@@ -219,11 +240,20 @@ msgstr "Gebruiker verwijderen"
msgid "Desc"
msgstr "Beschrijving"
#: src/components/header/ProfileMenu.tsx
msgid "Detailed"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/SettingsPage.tsx
msgid "Display"
msgstr "Weergave"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/DonatePage.tsx
msgid "Donate"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "Download"
msgstr "Downloaden"
@@ -278,15 +308,28 @@ msgstr "Uitgebreid"
msgid "Export your subscriptions and categories as an OPML file that can be imported in other feed reading services"
msgstr "Exporteer uw abonnementen en categorieën als een OPML-bestand dat kan worden geïmporteerd in andere feedleesservices"
#: src/components/header/Header.tsx
#: src/pages/WelcomePage.tsx
msgid "Extension options"
msgstr ""
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "Feednaam"
#: src/components/content/add/Subscribe.tsx
#: src/components/content/add/Subscribe.tsx
#: src/pages/app/FeedDetailsPage.tsx
msgid "Feed URL"
msgstr "Feed-URL"
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "Feednaam"
#: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now"
msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "bestand is vereist"
#: src/pages/app/FeedDetailsPage.tsx
msgid "Filtering expression"
@@ -312,14 +355,18 @@ msgstr "Nieuwe API-sleutel genereren"
msgid "Generated feed url"
msgstr "Gegenereerde feed-url"
#: src/pages/app/AboutPage.tsx
msgid "Go to the API documentation."
msgstr "Ga naar de API-documentatie."
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Go to {0}"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Go to the All view"
msgstr "Ga naar de weergave Alles"
#: src/pages/app/AboutPage.tsx
msgid "Go to the API documentation."
msgstr "Ga naar de API-documentatie."
#: src/pages/app/AboutPage.tsx
msgid "Goodies"
msgstr "Goederen"
@@ -336,10 +383,6 @@ msgstr "Indien niet leeg, een uitdrukking die evalueert naar 'true' of 'false'.
msgid "If you encounter an issue, please report it on the issues page of the GitHub project."
msgstr "Als je een probleem tegenkomt, meld dit dan op de pagina met problemen van het GitHub-project."
#: src/pages/app/AboutPage.tsx
msgid "If you like this project, please consider a donation to support the developer and help cover the costs of keeping this website online."
msgstr "Als je dit project leuk vindt, overweeg dan een donatie om de ontwikkelaar te ondersteunen en de kosten te dekken om deze website online te houden."
#: src/components/content/add/ImportOpml.tsx
msgid "Import"
msgstr ""
@@ -348,6 +391,7 @@ msgstr ""
msgid "In expanded view, scrolling through entries mark them as read"
msgstr "In de uitgevouwen weergave markeert het scrollen door items ze als gelezen"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Keep unread"
msgstr "Ongelezen houden"
@@ -397,6 +441,7 @@ msgstr "Tags laden..."
#: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx
#: src/pages/WelcomePage.tsx
msgid "Log in"
msgstr "Inloggen"
@@ -404,6 +449,10 @@ msgstr "Inloggen"
msgid "Logout"
msgstr "Uitloggen"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Long press"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/admin/AdminUsersPage.tsx
msgid "Manage users"
@@ -418,10 +467,12 @@ msgstr "Alles markeren als gelezen"
msgid "Mark all entries as read"
msgstr "Markeer alle vermeldingen als gelezen"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Mark as read"
msgstr "Markeren als gelezen"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Mark as read up to here"
msgstr "Markeer als gelezen tot hier"
@@ -430,6 +481,10 @@ msgstr "Markeer als gelezen tot hier"
msgid "Metrics"
msgstr "Metrieken"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Middle click"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Move the page down"
msgstr "Verplaats de pagina naar beneden"
@@ -482,19 +537,6 @@ msgstr "Geen inzendingen meer"
msgid "Nothing found"
msgstr "Niets gevonden"
#: src/pages/app/AddPage.tsx
msgid "OPML"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "OPML export"
msgstr "OPML-export"
#: src/components/content/add/ImportOpml.tsx
#: src/components/content/add/ImportOpml.tsx
msgid "OPML file"
msgstr "OPML-bestand"
#: src/pages/app/AboutPage.tsx
msgid "Oldest first"
msgstr "Oudste eerst"
@@ -503,6 +545,10 @@ msgstr "Oudste eerst"
msgid "Oops!"
msgstr "Oeps!"
#: src/components/header/Header.tsx
msgid "Open CommaFeed"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open current entry in a new tab"
msgstr "Huidige invoer openen in een nieuw tabblad"
@@ -515,6 +561,14 @@ msgstr "Open huidig item in een nieuw tabblad op de achtergrond"
msgid "Open link"
msgstr "Link openen"
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Open link in new background tab"
msgstr ""
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Open link in new tab"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open next entry"
msgstr "Volgende invoer openen"
@@ -527,6 +581,19 @@ msgstr "Open vorige invoer"
msgid "Open/close current entry"
msgstr "Huidige invoer openen/sluiten"
#: src/pages/app/AddPage.tsx
msgid "OPML"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "OPML export"
msgstr "OPML-export"
#: src/components/content/add/ImportOpml.tsx
#: src/components/content/add/ImportOpml.tsx
msgid "OPML file"
msgstr "OPML-bestand"
#: src/pages/app/AboutPage.tsx
msgid "Order"
msgstr "Bestelling"
@@ -564,10 +631,6 @@ msgstr "Positie"
msgid "Profile"
msgstr "Profiel"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr "REST-API"
#: src/pages/auth/PasswordRecoveryPage.tsx
msgid "Recover password"
msgstr "wachtwoord herstellen"
@@ -581,7 +644,16 @@ msgstr "Vernieuwen"
msgid "Registrations are closed on this CommaFeed instance"
msgstr "Registraties zijn gesloten op deze CommaFeed-instantie"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr "REST-API"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx
@@ -632,6 +704,14 @@ msgstr "Sites delen"
msgid "Shift"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Show entry menu (desktop)"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Show entry menu (mobile)"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Show feeds and categories with no unread entries"
msgstr "Toon feeds en categorieën zonder ongelezen items"
@@ -642,6 +722,7 @@ msgstr "Toon hulp bij sneltoetsen"
#: src/pages/auth/RegistrationPage.tsx
#: src/pages/auth/RegistrationPage.tsx
#: src/pages/WelcomePage.tsx
msgid "Sign up"
msgstr "Aanmelden"
@@ -654,6 +735,7 @@ msgstr "Er is net iets ergs gebeurd..."
msgid "Space"
msgstr "Ruimte"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Star"
msgstr "Ster"
@@ -669,23 +751,29 @@ msgstr "Met ster"
msgid "Subscribe"
msgstr "Abonneren"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "Abonneer-URL"
#: src/components/content/add/Subscribe.tsx
msgid "Subscribe to the feed"
msgstr "Abonneer je op de feed"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "Abonneer-URL"
#: src/components/Alert.tsx
msgid "Success"
msgstr "Succes"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Swipe header to the right"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to dark theme"
msgstr "Overschakelen naar donker thema"
#: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to light theme"
msgstr "Overschakelen naar lichtthema"
@@ -709,10 +797,15 @@ msgstr "Toggle leesstatus van huidige invoer"
msgid "Try out CommaFeed with the demo account: demo/demo"
msgstr "Probeer CommaFeed uit met het demo-account: demo/demo"
#: src/pages/WelcomePage.tsx
msgid "Try the demo!"
msgstr ""
#: src/components/header/Header.tsx
msgid "Unread"
msgstr "Ongelezen"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Unstar"
msgstr "Sterren uit"
@@ -722,15 +815,15 @@ msgstr "Sterren uit"
msgid "Unsubscribe"
msgstr "Afmelden"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Gebruikersnaam"
#: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx
msgid "User Name or E-mail"
msgstr "Gebruikersnaam of e-mailadres"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Gebruikersnaam"
#: src/components/Alert.tsx
msgid "Warning"
msgstr "Waarschuwing"
@@ -743,6 +836,6 @@ 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/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "bestand is vereist"
#: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh."
msgstr ""

View File

@@ -13,6 +13,14 @@ msgstr ""
"Language-Team: \n"
"Plural-Forms: \n"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "<0>CommaFeed is an open-source project. Sources are hosted on </0><1>GitHub</1>."
msgstr ""
#: src/pages/app/FeedDetailsPage.tsx
msgid "<0>Complete syntax is available </0><1>here</1>."
msgstr ""
@@ -21,14 +29,14 @@ msgstr ""
msgid "<0>Have an account?</0><1>Log in!</1>"
msgstr "<0>Har du en konto?</0><1>Logg på!</1>"
#: src/pages/app/DonatePage.tsx
msgid "<0>Hey,</0><1>I'm Jérémie from Belgium and I've been working on CommaFeed in my free time for over 10 years now. Thanks for taking an interest in helping me continue supporting CommaFeed.</1>"
msgstr ""
#: src/pages/auth/LoginPage.tsx
msgid "<0>Need an account?</0><1>Sign up!</1>"
msgstr "<0>Trenger du en konto?</0><1>Registrer deg!</1>"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "API-nøkkel"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/AboutPage.tsx
msgid "About"
@@ -75,6 +83,10 @@ msgstr "En opml-fil er en XML-fil som inneholder feed-URLer og kategorier. "
msgid "Analyze feed"
msgstr "Analyser feed"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "API-nøkkel"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Are you sure you want to delete category <0>{categoryName}</0>?"
msgstr "Er du sikker på at du vil slette kategori <0>{categoryName}</0>?"
@@ -123,6 +135,7 @@ msgstr "Nettleserutvidelser"
#: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx
@@ -150,10 +163,6 @@ msgstr "Endring av passord vil generere en ny API-nøkkel"
msgid "Check that the feed is working"
msgstr "Sjekk at feeden fungerer"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>."
msgstr "CommaFeed er et åpen kildekode-prosjekt. "
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item"
msgstr "CommaFeed neste uleste element"
@@ -194,6 +203,18 @@ msgstr ""
msgid "Current password"
msgstr "Gjeldende passord"
#: src/pages/app/SettingsPage.tsx
msgid "Custom code"
msgstr ""
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom CSS rules that will be applied"
msgstr ""
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom JS code that will be executed on page load"
msgstr ""
#: src/pages/admin/AdminUsersPage.tsx
msgid "Date created"
msgstr "Dato opprettet"
@@ -202,15 +223,15 @@ msgstr "Dato opprettet"
msgid "Delete"
msgstr "Slett"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Slett kategori"
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
msgid "Delete account"
msgstr "Slett konto"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Slett kategori"
#: src/pages/admin/AdminUsersPage.tsx
msgid "Delete user"
msgstr "Slett bruker"
@@ -219,11 +240,20 @@ msgstr "Slett bruker"
msgid "Desc"
msgstr ""
#: src/components/header/ProfileMenu.tsx
msgid "Detailed"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/SettingsPage.tsx
msgid "Display"
msgstr "Visning"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/DonatePage.tsx
msgid "Donate"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "Download"
msgstr "Last ned"
@@ -278,15 +308,28 @@ msgstr "Utvidet"
msgid "Export your subscriptions and categories as an OPML file that can be imported in other feed reading services"
msgstr "Eksporter abonnementene og kategoriene dine som en OPML-fil som kan importeres i andre feedlesetjenester"
#: src/components/header/Header.tsx
#: src/pages/WelcomePage.tsx
msgid "Extension options"
msgstr ""
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "Feednavn"
#: src/components/content/add/Subscribe.tsx
#: src/components/content/add/Subscribe.tsx
#: src/pages/app/FeedDetailsPage.tsx
msgid "Feed URL"
msgstr "Feed-URL"
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "Feednavn"
#: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now"
msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "fil kreves"
#: src/pages/app/FeedDetailsPage.tsx
msgid "Filtering expression"
@@ -312,14 +355,18 @@ msgstr "Generer ny API-nøkkel"
msgid "Generated feed url"
msgstr "Generert feed-url"
#: src/pages/app/AboutPage.tsx
msgid "Go to the API documentation."
msgstr "Gå til API-dokumentasjonen."
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Go to {0}"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Go to the All view"
msgstr "Gå til visningen Alle"
#: src/pages/app/AboutPage.tsx
msgid "Go to the API documentation."
msgstr "Gå til API-dokumentasjonen."
#: src/pages/app/AboutPage.tsx
msgid "Goodies"
msgstr "Godbiter"
@@ -336,10 +383,6 @@ msgstr "Hvis det ikke er tomt, et uttrykk som vurderes til 'sant' eller 'usant'.
msgid "If you encounter an issue, please report it on the issues page of the GitHub project."
msgstr "Hvis du støter på et problem, vennligst rapporter det på problemsiden til GitHub-prosjektet."
#: src/pages/app/AboutPage.tsx
msgid "If you like this project, please consider a donation to support the developer and help cover the costs of keeping this website online."
msgstr "Hvis du liker dette prosjektet, kan du vurdere en donasjon for å støtte utvikleren og hjelpe til med å dekke kostnadene ved å holde denne nettsiden online."
#: src/components/content/add/ImportOpml.tsx
msgid "Import"
msgstr ""
@@ -348,6 +391,7 @@ msgstr ""
msgid "In expanded view, scrolling through entries mark them as read"
msgstr "I utvidet visning merker du dem som lest ved å rulle gjennom oppføringer"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Keep unread"
msgstr "Behold ulest"
@@ -397,6 +441,7 @@ msgstr "Laster tagger..."
#: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx
#: src/pages/WelcomePage.tsx
msgid "Log in"
msgstr "Logg inn"
@@ -404,6 +449,10 @@ msgstr "Logg inn"
msgid "Logout"
msgstr "Logg ut"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Long press"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/admin/AdminUsersPage.tsx
msgid "Manage users"
@@ -418,10 +467,12 @@ msgstr "Merk alle som lest"
msgid "Mark all entries as read"
msgstr "Merk alle oppføringer som lest"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Mark as read"
msgstr "Merk som lest"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Mark as read up to here"
msgstr "Merk som lest frem til her"
@@ -430,6 +481,10 @@ msgstr "Merk som lest frem til her"
msgid "Metrics"
msgstr "Beregninger"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Middle click"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Move the page down"
msgstr "Flytt siden ned"
@@ -482,19 +537,6 @@ msgstr "Ingen flere oppføringer"
msgid "Nothing found"
msgstr "Ingenting funnet"
#: src/pages/app/AddPage.tsx
msgid "OPML"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "OPML export"
msgstr "OPML eksport"
#: src/components/content/add/ImportOpml.tsx
#: src/components/content/add/ImportOpml.tsx
msgid "OPML file"
msgstr "OPML-fil"
#: src/pages/app/AboutPage.tsx
msgid "Oldest first"
msgstr "Eldste først"
@@ -503,6 +545,10 @@ msgstr "Eldste først"
msgid "Oops!"
msgstr "Beklager!"
#: src/components/header/Header.tsx
msgid "Open CommaFeed"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open current entry in a new tab"
msgstr "Åpne gjeldende oppføring i en ny fane"
@@ -515,6 +561,14 @@ msgstr "Åpne gjeldende oppføring i en ny fane i bakgrunnen"
msgid "Open link"
msgstr "Åpen lenke"
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Open link in new background tab"
msgstr ""
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Open link in new tab"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open next entry"
msgstr "Åpne neste oppføring"
@@ -527,6 +581,19 @@ msgstr "Åpne forrige oppføring"
msgid "Open/close current entry"
msgstr "Åpne/lukk gjeldende oppføring"
#: src/pages/app/AddPage.tsx
msgid "OPML"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "OPML export"
msgstr "OPML eksport"
#: src/components/content/add/ImportOpml.tsx
#: src/components/content/add/ImportOpml.tsx
msgid "OPML file"
msgstr "OPML-fil"
#: src/pages/app/AboutPage.tsx
msgid "Order"
msgstr "Ord"
@@ -564,10 +631,6 @@ msgstr "Posisjon"
msgid "Profile"
msgstr "Profil"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/pages/auth/PasswordRecoveryPage.tsx
msgid "Recover password"
msgstr "Gjenopprett passord"
@@ -581,7 +644,16 @@ msgstr "Oppdater"
msgid "Registrations are closed on this CommaFeed instance"
msgstr "Registreringer er stengt på denne CommaFeed-forekomsten"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx
@@ -632,6 +704,14 @@ msgstr "Delingssider"
msgid "Shift"
msgstr "Skift"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Show entry menu (desktop)"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Show entry menu (mobile)"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Show feeds and categories with no unread entries"
msgstr "Vis feeder og kategorier uten uleste oppføringer"
@@ -642,6 +722,7 @@ msgstr "Vis hurtigtasthjelp"
#: src/pages/auth/RegistrationPage.tsx
#: src/pages/auth/RegistrationPage.tsx
#: src/pages/WelcomePage.tsx
msgid "Sign up"
msgstr "Meld deg på"
@@ -654,6 +735,7 @@ msgstr "Noe ille skjedde akkurat..."
msgid "Space"
msgstr ""
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Star"
msgstr "Stjerne"
@@ -669,23 +751,29 @@ msgstr "Stjerne"
msgid "Subscribe"
msgstr "Abonner"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "Abonner URL"
#: src/components/content/add/Subscribe.tsx
msgid "Subscribe to the feed"
msgstr "Abonner på feeden"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "Abonner URL"
#: src/components/Alert.tsx
msgid "Success"
msgstr "Suksess"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Swipe header to the right"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to dark theme"
msgstr "Bytt til mørkt tema"
#: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to light theme"
msgstr "Bytt til lystema"
@@ -709,10 +797,15 @@ msgstr "Veksle lesestatus for gjeldende oppføring"
msgid "Try out CommaFeed with the demo account: demo/demo"
msgstr "Prøv CommaFeed med demokontoen: demo/demo"
#: src/pages/WelcomePage.tsx
msgid "Try the demo!"
msgstr ""
#: src/components/header/Header.tsx
msgid "Unread"
msgstr "Ulest"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Unstar"
msgstr "Fjern stjerne"
@@ -722,15 +815,15 @@ msgstr "Fjern stjerne"
msgid "Unsubscribe"
msgstr "Avslutt abonnementet"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Brukernavn"
#: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx
msgid "User Name or E-mail"
msgstr "Brukernavn eller e-post"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Brukernavn"
#: src/components/Alert.tsx
msgid "Warning"
msgstr "Advarsel"
@@ -743,6 +836,6 @@ 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/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "fil kreves"
#: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh."
msgstr ""

View File

@@ -13,6 +13,14 @@ msgstr ""
"Language-Team: \n"
"Plural-Forms: \n"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "<0>CommaFeed is an open-source project. Sources are hosted on </0><1>GitHub</1>."
msgstr ""
#: src/pages/app/FeedDetailsPage.tsx
msgid "<0>Complete syntax is available </0><1>here</1>."
msgstr ""
@@ -21,14 +29,14 @@ msgstr ""
msgid "<0>Have an account?</0><1>Log in!</1>"
msgstr "<0>Masz konto?</0><1>Zaloguj się!<//1>"
#: src/pages/app/DonatePage.tsx
msgid "<0>Hey,</0><1>I'm Jérémie from Belgium and I've been working on CommaFeed in my free time for over 10 years now. Thanks for taking an interest in helping me continue supporting CommaFeed.</1>"
msgstr ""
#: src/pages/auth/LoginPage.tsx
msgid "<0>Need an account?</0><1>Sign up!</1>"
msgstr "<0>Potrzebujesz konta?</0><1>Zarejestruj się!</1>"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "klucz API"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/AboutPage.tsx
msgid "About"
@@ -75,6 +83,10 @@ msgstr "Plik opml to plik XML zawierający adresy URL i kategorie kanałów. "
msgid "Analyze feed"
msgstr "Analizuj kanał"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "klucz API"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Are you sure you want to delete category <0>{categoryName}</0>?"
msgstr "Czy na pewno chcesz usunąć kategorię <0>{categoryName}</0>?"
@@ -123,6 +135,7 @@ msgstr "Rozszerzenia przeglądarki"
#: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx
@@ -150,10 +163,6 @@ msgstr "Zmiana hasła spowoduje wygenerowanie nowego klucza API"
msgid "Check that the feed is working"
msgstr "Sprawdź, czy kanał działa"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>."
msgstr "CommaFeed to projekt typu open source. "
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item"
msgstr "Przecinek następny nieprzeczytany element"
@@ -194,6 +203,18 @@ msgstr ""
msgid "Current password"
msgstr "aktualne hasło"
#: src/pages/app/SettingsPage.tsx
msgid "Custom code"
msgstr ""
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom CSS rules that will be applied"
msgstr ""
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom JS code that will be executed on page load"
msgstr ""
#: src/pages/admin/AdminUsersPage.tsx
msgid "Date created"
msgstr "Data utworzenia"
@@ -202,15 +223,15 @@ msgstr "Data utworzenia"
msgid "Delete"
msgstr "Usuń"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Usuń kategorię"
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
msgid "Delete account"
msgstr "Usuń konto"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Usuń kategorię"
#: src/pages/admin/AdminUsersPage.tsx
msgid "Delete user"
msgstr "Usuń użytkownika"
@@ -219,11 +240,20 @@ msgstr "Usuń użytkownika"
msgid "Desc"
msgstr "Opis"
#: src/components/header/ProfileMenu.tsx
msgid "Detailed"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/SettingsPage.tsx
msgid "Display"
msgstr "Wyświetlacz"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/DonatePage.tsx
msgid "Donate"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "Download"
msgstr "Pobierz"
@@ -278,15 +308,28 @@ msgstr "Rozszerzony"
msgid "Export your subscriptions and categories as an OPML file that can be imported in other feed reading services"
msgstr "Eksportuj swoje subskrypcje i kategorie jako plik OPML, który można zaimportować do innych usług odczytu kanałów"
#: src/components/header/Header.tsx
#: src/pages/WelcomePage.tsx
msgid "Extension options"
msgstr ""
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "nazwa kanału"
#: src/components/content/add/Subscribe.tsx
#: src/components/content/add/Subscribe.tsx
#: src/pages/app/FeedDetailsPage.tsx
msgid "Feed URL"
msgstr "URL kanału"
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "nazwa kanału"
#: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now"
msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "plik jest wymagany"
#: src/pages/app/FeedDetailsPage.tsx
msgid "Filtering expression"
@@ -312,14 +355,18 @@ msgstr "Wygeneruj nowy klucz API"
msgid "Generated feed url"
msgstr "Wygenerowany adres URL kanału"
#: src/pages/app/AboutPage.tsx
msgid "Go to the API documentation."
msgstr "Przejdź do dokumentacji API."
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Go to {0}"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Go to the All view"
msgstr "Przejdź do widoku Wszystkie"
#: src/pages/app/AboutPage.tsx
msgid "Go to the API documentation."
msgstr "Przejdź do dokumentacji API."
#: src/pages/app/AboutPage.tsx
msgid "Goodies"
msgstr "Gadżety"
@@ -336,10 +383,6 @@ msgstr "Jeśli nie jest puste, wyrażenie oceniające jako „prawda” lub „f
msgid "If you encounter an issue, please report it on the issues page of the GitHub project."
msgstr "Jeśli napotkasz problem, zgłoś go na stronie problemów projektu GitHub."
#: src/pages/app/AboutPage.tsx
msgid "If you like this project, please consider a donation to support the developer and help cover the costs of keeping this website online."
msgstr "Jeśli podoba Ci się ten projekt, rozważ darowiznę, aby wesprzeć programistę i pokryć koszty utrzymania tej witryny online."
#: src/components/content/add/ImportOpml.tsx
msgid "Import"
msgstr ""
@@ -348,6 +391,7 @@ msgstr ""
msgid "In expanded view, scrolling through entries mark them as read"
msgstr "W widoku rozszerzonym przewijanie wpisów oznacza je jako przeczytane"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Keep unread"
msgstr "Nie przeczytaj"
@@ -397,6 +441,7 @@ msgstr "Ładowanie tagów..."
#: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx
#: src/pages/WelcomePage.tsx
msgid "Log in"
msgstr "Zaloguj się"
@@ -404,6 +449,10 @@ msgstr "Zaloguj się"
msgid "Logout"
msgstr "Wyloguj"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Long press"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/admin/AdminUsersPage.tsx
msgid "Manage users"
@@ -418,10 +467,12 @@ msgstr "Oznacz wszystko jako przeczytane"
msgid "Mark all entries as read"
msgstr "Oznacz wszystkie wpisy jako przeczytane"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Mark as read"
msgstr "Oznacz jako przeczytane"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Mark as read up to here"
msgstr "Oznacz jako przeczytane do tej pory"
@@ -430,6 +481,10 @@ msgstr "Oznacz jako przeczytane do tej pory"
msgid "Metrics"
msgstr "Metryki"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Middle click"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Move the page down"
msgstr "Przesuń stronę w dół"
@@ -482,19 +537,6 @@ msgstr "Nie ma więcej wpisów"
msgid "Nothing found"
msgstr "Nic nie znaleziono"
#: src/pages/app/AddPage.tsx
msgid "OPML"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "OPML export"
msgstr "eksport OPML"
#: src/components/content/add/ImportOpml.tsx
#: src/components/content/add/ImportOpml.tsx
msgid "OPML file"
msgstr "plik OPML"
#: src/pages/app/AboutPage.tsx
msgid "Oldest first"
msgstr "Najstarsze jako pierwsze"
@@ -503,6 +545,10 @@ msgstr "Najstarsze jako pierwsze"
msgid "Oops!"
msgstr "Ups!"
#: src/components/header/Header.tsx
msgid "Open CommaFeed"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open current entry in a new tab"
msgstr "Otwórz bieżący wpis w nowej karcie"
@@ -515,6 +561,14 @@ msgstr "Otwórz bieżący wpis w nowej karcie w tle"
msgid "Open link"
msgstr "Otwórz link"
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Open link in new background tab"
msgstr ""
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Open link in new tab"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open next entry"
msgstr "Otwórz następny wpis"
@@ -527,6 +581,19 @@ msgstr "Otwórz poprzedni wpis"
msgid "Open/close current entry"
msgstr "Otwórz/zamknij bieżący wpis"
#: src/pages/app/AddPage.tsx
msgid "OPML"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "OPML export"
msgstr "eksport OPML"
#: src/components/content/add/ImportOpml.tsx
#: src/components/content/add/ImportOpml.tsx
msgid "OPML file"
msgstr "plik OPML"
#: src/pages/app/AboutPage.tsx
msgid "Order"
msgstr "Porządek"
@@ -564,10 +631,6 @@ msgstr "Pozycja"
msgid "Profile"
msgstr "Profil"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/pages/auth/PasswordRecoveryPage.tsx
msgid "Recover password"
msgstr "Odzyskaj hasło"
@@ -581,7 +644,16 @@ msgstr "Odśwież"
msgid "Registrations are closed on this CommaFeed instance"
msgstr "Rejestracje są zamknięte w tej instancji CommaFeed"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx
@@ -632,6 +704,14 @@ msgstr "Udostępnianie witryn"
msgid "Shift"
msgstr "zmiana"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Show entry menu (desktop)"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Show entry menu (mobile)"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Show feeds and categories with no unread entries"
msgstr "Pokaż kanały i kategorie bez nieprzeczytanych wpisów"
@@ -642,6 +722,7 @@ msgstr "Pokaż pomoc dotyczącą skrótów klawiaturowych"
#: src/pages/auth/RegistrationPage.tsx
#: src/pages/auth/RegistrationPage.tsx
#: src/pages/WelcomePage.tsx
msgid "Sign up"
msgstr "Zarejestruj się"
@@ -654,6 +735,7 @@ msgstr "Coś złego właśnie się stało..."
msgid "Space"
msgstr "Przestrzeń"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Star"
msgstr "Gwiazda"
@@ -669,23 +751,29 @@ msgstr "Oznaczone gwiazdką"
msgid "Subscribe"
msgstr "Subskrybuj"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "Subskrybuj adres URL"
#: src/components/content/add/Subscribe.tsx
msgid "Subscribe to the feed"
msgstr "Subskrybuj kanał"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "Subskrybuj adres URL"
#: src/components/Alert.tsx
msgid "Success"
msgstr "Sukces"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Swipe header to the right"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to dark theme"
msgstr "Przełącz na ciemny motyw"
#: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to light theme"
msgstr "Przełącz na jasny motyw"
@@ -709,10 +797,15 @@ msgstr "Przełącz stan odczytu bieżącego wpisu"
msgid "Try out CommaFeed with the demo account: demo/demo"
msgstr "Wypróbuj CommaFeed z kontem demo: demo/demo"
#: src/pages/WelcomePage.tsx
msgid "Try the demo!"
msgstr ""
#: src/components/header/Header.tsx
msgid "Unread"
msgstr "Nieprzeczytane"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Unstar"
msgstr ""
@@ -722,15 +815,15 @@ msgstr ""
msgid "Unsubscribe"
msgstr "Anuluj subskrypcję"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Nazwa użytkownika"
#: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx
msgid "User Name or E-mail"
msgstr "Nazwa użytkownika lub e-mail"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Nazwa użytkownika"
#: src/components/Alert.tsx
msgid "Warning"
msgstr "Ostrzeżenie"
@@ -743,6 +836,6 @@ 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/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "plik jest wymagany"
#: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh."
msgstr ""

View File

@@ -13,6 +13,14 @@ msgstr ""
"Language-Team: \n"
"Plural-Forms: \n"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "<0>CommaFeed is an open-source project. Sources are hosted on </0><1>GitHub</1>."
msgstr ""
#: src/pages/app/FeedDetailsPage.tsx
msgid "<0>Complete syntax is available </0><1>here</1>."
msgstr ""
@@ -21,14 +29,14 @@ msgstr ""
msgid "<0>Have an account?</0><1>Log in!</1>"
msgstr "<0>Tem uma conta?</0><1>Faça login!</1>"
#: src/pages/app/DonatePage.tsx
msgid "<0>Hey,</0><1>I'm Jérémie from Belgium and I've been working on CommaFeed in my free time for over 10 years now. Thanks for taking an interest in helping me continue supporting CommaFeed.</1>"
msgstr ""
#: src/pages/auth/LoginPage.tsx
msgid "<0>Need an account?</0><1>Sign up!</1>"
msgstr "<0>Precisa de uma conta?</0><1>Inscreva-se!</1>"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "chave de API"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/AboutPage.tsx
msgid "About"
@@ -75,6 +83,10 @@ msgstr "Um arquivo opml é um arquivo XML contendo URLs e categorias de feed. "
msgid "Analyze feed"
msgstr "Analisar feed"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "chave de API"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Are you sure you want to delete category <0>{categoryName}</0>?"
msgstr "Tem certeza de que deseja excluir a categoria <0>{categoryName}</0>?"
@@ -123,6 +135,7 @@ msgstr "Extensões do navegador"
#: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx
@@ -150,10 +163,6 @@ msgstr "A alteração da senha gerará uma nova chave de API"
msgid "Check that the feed is working"
msgstr "Verifique se o feed está funcionando"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>."
msgstr "CommaFeed é um projeto de código aberto. "
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item"
msgstr "CommaFeed próximo item não lido"
@@ -194,6 +203,18 @@ msgstr ""
msgid "Current password"
msgstr "Senha atual"
#: src/pages/app/SettingsPage.tsx
msgid "Custom code"
msgstr ""
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom CSS rules that will be applied"
msgstr ""
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom JS code that will be executed on page load"
msgstr ""
#: src/pages/admin/AdminUsersPage.tsx
msgid "Date created"
msgstr "Data de criação"
@@ -202,15 +223,15 @@ msgstr "Data de criação"
msgid "Delete"
msgstr "Excluir"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Excluir Categoria"
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
msgid "Delete account"
msgstr "Excluir conta"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Excluir Categoria"
#: src/pages/admin/AdminUsersPage.tsx
msgid "Delete user"
msgstr "Excluir usuário"
@@ -219,11 +240,20 @@ msgstr "Excluir usuário"
msgid "Desc"
msgstr "Descrição"
#: src/components/header/ProfileMenu.tsx
msgid "Detailed"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/SettingsPage.tsx
msgid "Display"
msgstr "Exibir"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/DonatePage.tsx
msgid "Donate"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "Download"
msgstr "Baixar"
@@ -278,15 +308,28 @@ msgstr "Expandido"
msgid "Export your subscriptions and categories as an OPML file that can be imported in other feed reading services"
msgstr "Exporte suas inscrições e categorias como um arquivo OPML que pode ser importado em outros serviços de leitura de feed"
#: src/components/header/Header.tsx
#: src/pages/WelcomePage.tsx
msgid "Extension options"
msgstr ""
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "Nome do feed"
#: src/components/content/add/Subscribe.tsx
#: src/components/content/add/Subscribe.tsx
#: src/pages/app/FeedDetailsPage.tsx
msgid "Feed URL"
msgstr "URL do feed"
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "Nome do feed"
#: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now"
msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "o arquivo é obrigatório"
#: src/pages/app/FeedDetailsPage.tsx
msgid "Filtering expression"
@@ -312,14 +355,18 @@ msgstr "Gerar nova chave de API"
msgid "Generated feed url"
msgstr "URL do feed gerado"
#: src/pages/app/AboutPage.tsx
msgid "Go to the API documentation."
msgstr "Vá para a documentação da API."
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Go to {0}"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Go to the All view"
msgstr "Ir para a visualização Tudo"
#: src/pages/app/AboutPage.tsx
msgid "Go to the API documentation."
msgstr "Vá para a documentação da API."
#: src/pages/app/AboutPage.tsx
msgid "Goodies"
msgstr "Brindes"
@@ -336,10 +383,6 @@ msgstr "Se não estiver vazio, uma expressão avaliada como 'true' ou 'false'. "
msgid "If you encounter an issue, please report it on the issues page of the GitHub project."
msgstr "Se você encontrar um problema, informe-o na página de problemas do projeto GitHub."
#: src/pages/app/AboutPage.tsx
msgid "If you like this project, please consider a donation to support the developer and help cover the costs of keeping this website online."
msgstr "Se você gostar deste projeto, considere uma doação para apoiar o desenvolvedor e ajudar a cobrir os custos de manter este site online."
#: src/components/content/add/ImportOpml.tsx
msgid "Import"
msgstr "Importar"
@@ -348,6 +391,7 @@ msgstr "Importar"
msgid "In expanded view, scrolling through entries mark them as read"
msgstr "Na visualização expandida, rolar pelas entradas marca-as como lidas"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Keep unread"
msgstr "Manter não lido"
@@ -397,6 +441,7 @@ msgstr "Carregando tags..."
#: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx
#: src/pages/WelcomePage.tsx
msgid "Log in"
msgstr "Entrar"
@@ -404,6 +449,10 @@ msgstr "Entrar"
msgid "Logout"
msgstr "Sair"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Long press"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/admin/AdminUsersPage.tsx
msgid "Manage users"
@@ -418,10 +467,12 @@ msgstr "Marcar todos como lidos"
msgid "Mark all entries as read"
msgstr "Marcar todas as entradas como lidas"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Mark as read"
msgstr "Marcar como lido"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Mark as read up to here"
msgstr "Marcar como lido até aqui"
@@ -430,6 +481,10 @@ msgstr "Marcar como lido até aqui"
msgid "Metrics"
msgstr "Métricas"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Middle click"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Move the page down"
msgstr "Mova a página para baixo"
@@ -482,19 +537,6 @@ msgstr "Não há mais entradas"
msgid "Nothing found"
msgstr "Nada encontrado"
#: src/pages/app/AddPage.tsx
msgid "OPML"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "OPML export"
msgstr "Exportação OPML"
#: src/components/content/add/ImportOpml.tsx
#: src/components/content/add/ImportOpml.tsx
msgid "OPML file"
msgstr "Arquivo OPML"
#: src/pages/app/AboutPage.tsx
msgid "Oldest first"
msgstr "Mais antigo primeiro"
@@ -503,6 +545,10 @@ msgstr "Mais antigo primeiro"
msgid "Oops!"
msgstr "Opa!"
#: src/components/header/Header.tsx
msgid "Open CommaFeed"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open current entry in a new tab"
msgstr "Abrir a entrada atual em uma nova aba"
@@ -515,6 +561,14 @@ msgstr "Abrir a entrada atual em uma nova aba em segundo plano"
msgid "Open link"
msgstr "Abrir link"
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Open link in new background tab"
msgstr ""
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Open link in new tab"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open next entry"
msgstr "Abrir próxima entrada"
@@ -527,6 +581,19 @@ msgstr "Abrir entrada anterior"
msgid "Open/close current entry"
msgstr "Abrir/fechar entrada atual"
#: src/pages/app/AddPage.tsx
msgid "OPML"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "OPML export"
msgstr "Exportação OPML"
#: src/components/content/add/ImportOpml.tsx
#: src/components/content/add/ImportOpml.tsx
msgid "OPML file"
msgstr "Arquivo OPML"
#: src/pages/app/AboutPage.tsx
msgid "Order"
msgstr "Ordem"
@@ -564,10 +631,6 @@ msgstr "Posição"
msgid "Profile"
msgstr "Perfil"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr "API REST"
#: src/pages/auth/PasswordRecoveryPage.tsx
msgid "Recover password"
msgstr "Recuperar senha"
@@ -581,7 +644,16 @@ msgstr "Atualizar"
msgid "Registrations are closed on this CommaFeed instance"
msgstr "Os registros estão fechados nesta instância do CommaFeed"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr "API REST"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx
@@ -632,6 +704,14 @@ msgstr "Compartilhando sites"
msgid "Shift"
msgstr "Mudar"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Show entry menu (desktop)"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Show entry menu (mobile)"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Show feeds and categories with no unread entries"
msgstr "Mostrar feeds e categorias sem entradas não lidas"
@@ -642,6 +722,7 @@ msgstr "Mostrar ajuda de atalho de teclado"
#: src/pages/auth/RegistrationPage.tsx
#: src/pages/auth/RegistrationPage.tsx
#: src/pages/WelcomePage.tsx
msgid "Sign up"
msgstr "Inscreva-se"
@@ -654,6 +735,7 @@ msgstr "Algo ruim acabou de acontecer..."
msgid "Space"
msgstr "Espaço"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Star"
msgstr "Estrela"
@@ -669,23 +751,29 @@ msgstr "Com estrela"
msgid "Subscribe"
msgstr "Assinar"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "URL de inscrição"
#: src/components/content/add/Subscribe.tsx
msgid "Subscribe to the feed"
msgstr "Inscrever-se no feed"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "URL de inscrição"
#: src/components/Alert.tsx
msgid "Success"
msgstr "Sucesso"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Swipe header to the right"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to dark theme"
msgstr "Mudar para tema escuro"
#: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to light theme"
msgstr "Mudar para tema claro"
@@ -709,10 +797,15 @@ msgstr "Alternar o status de leitura da entrada atual"
msgid "Try out CommaFeed with the demo account: demo/demo"
msgstr "Experimente o CommaFeed com a conta demo: demo/demo"
#: src/pages/WelcomePage.tsx
msgid "Try the demo!"
msgstr ""
#: src/components/header/Header.tsx
msgid "Unread"
msgstr "Não lido"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Unstar"
msgstr "Desestrelar"
@@ -722,15 +815,15 @@ msgstr "Desestrelar"
msgid "Unsubscribe"
msgstr "Cancelar inscrição"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Nome de usuário"
#: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx
msgid "User Name or E-mail"
msgstr "Nome de usuário ou e-mail"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Nome de usuário"
#: src/components/Alert.tsx
msgid "Warning"
msgstr "Aviso"
@@ -743,6 +836,6 @@ 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/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "o arquivo é obrigatório"
#: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh."
msgstr ""

View File

@@ -13,6 +13,14 @@ msgstr ""
"Language-Team: \n"
"Plural-Forms: \n"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "<0>CommaFeed is an open-source project. Sources are hosted on </0><1>GitHub</1>."
msgstr ""
#: src/pages/app/FeedDetailsPage.tsx
msgid "<0>Complete syntax is available </0><1>here</1>."
msgstr ""
@@ -21,14 +29,14 @@ msgstr ""
msgid "<0>Have an account?</0><1>Log in!</1>"
msgstr "<0>Есть аккаунт?</0><1>Войти!</1>"
#: src/pages/app/DonatePage.tsx
msgid "<0>Hey,</0><1>I'm Jérémie from Belgium and I've been working on CommaFeed in my free time for over 10 years now. Thanks for taking an interest in helping me continue supporting CommaFeed.</1>"
msgstr ""
#: src/pages/auth/LoginPage.tsx
msgid "<0>Need an account?</0><1>Sign up!</1>"
msgstr "<0>Нужен аккаунт?</0><1>Зарегистрируйтесь!</1>"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "ключ API"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/AboutPage.tsx
msgid "About"
@@ -75,6 +83,10 @@ msgstr "OPML-файл — это XML-файл, содержащий URL-адре
msgid "Analyze feed"
msgstr "Анализ канала"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "ключ API"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Are you sure you want to delete category <0>{categoryName}</0>?"
msgstr "Вы уверены, что хотите удалить категорию <0>{categoryName}</0>?"
@@ -123,6 +135,7 @@ msgstr "Расширения браузера"
#: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx
@@ -150,10 +163,6 @@ msgstr "При изменении пароля будет сгенерирова
msgid "Check that the feed is working"
msgstr "Проверьте, работает ли лента."
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>."
msgstr "CommaFeed — это проект с открытым исходным кодом. "
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item"
msgstr "CommaFeed следующий непрочитанный элемент"
@@ -194,6 +203,18 @@ msgstr ""
msgid "Current password"
msgstr "Текущий пароль"
#: src/pages/app/SettingsPage.tsx
msgid "Custom code"
msgstr ""
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom CSS rules that will be applied"
msgstr ""
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom JS code that will be executed on page load"
msgstr ""
#: src/pages/admin/AdminUsersPage.tsx
msgid "Date created"
msgstr "Дата создания"
@@ -202,15 +223,15 @@ msgstr "Дата создания"
msgid "Delete"
msgstr "Удалить"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Удалить категорию"
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
msgid "Delete account"
msgstr "Удалить учетную запись"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Удалить категорию"
#: src/pages/admin/AdminUsersPage.tsx
msgid "Delete user"
msgstr "Удалить пользователя"
@@ -219,11 +240,20 @@ msgstr "Удалить пользователя"
msgid "Desc"
msgstr "По убыванию"
#: src/components/header/ProfileMenu.tsx
msgid "Detailed"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/SettingsPage.tsx
msgid "Display"
msgstr "Дисплей"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/DonatePage.tsx
msgid "Donate"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "Download"
msgstr "Скачать"
@@ -278,15 +308,28 @@ msgstr "Расширенный"
msgid "Export your subscriptions and categories as an OPML file that can be imported in other feed reading services"
msgstr "Экспортируйте свои подписки и категории в виде файла OPML, который можно импортировать в другие службы чтения каналов."
#: src/components/header/Header.tsx
#: src/pages/WelcomePage.tsx
msgid "Extension options"
msgstr ""
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "Имя фида"
#: src/components/content/add/Subscribe.tsx
#: src/components/content/add/Subscribe.tsx
#: src/pages/app/FeedDetailsPage.tsx
msgid "Feed URL"
msgstr "URL-адрес фида"
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "Имя фида"
#: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now"
msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "требуется файл"
#: src/pages/app/FeedDetailsPage.tsx
msgid "Filtering expression"
@@ -312,14 +355,18 @@ msgstr "Создать новый ключ API."
msgid "Generated feed url"
msgstr "Сгенерированный URL фида"
#: src/pages/app/AboutPage.tsx
msgid "Go to the API documentation."
msgstr "Перейдите к документации по API."
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Go to {0}"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Go to the All view"
msgstr "Перейти к представлению «Все»"
#: src/pages/app/AboutPage.tsx
msgid "Go to the API documentation."
msgstr "Перейдите к документации по API."
#: src/pages/app/AboutPage.tsx
msgid "Goodies"
msgstr "Сладости"
@@ -336,10 +383,6 @@ msgstr "Если не пусто, выражение оценивается ка
msgid "If you encounter an issue, please report it on the issues page of the GitHub project."
msgstr "Если вы столкнулись с проблемой, сообщите о ней на странице проблем проекта GitHub."
#: src/pages/app/AboutPage.tsx
msgid "If you like this project, please consider a donation to support the developer and help cover the costs of keeping this website online."
msgstr "Если вам нравится этот проект, подумайте о том, чтобы сделать пожертвование для поддержки разработчика и помочь покрыть расходы на содержание этого веб-сайта в сети."
#: src/components/content/add/ImportOpml.tsx
msgid "Import"
msgstr "Импорт"
@@ -348,6 +391,7 @@ msgstr "Импорт"
msgid "In expanded view, scrolling through entries mark them as read"
msgstr "В развернутом виде прокрутка записей помечает их как прочитанные."
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Keep unread"
msgstr "Не читать"
@@ -397,6 +441,7 @@ msgstr "Загрузка тегов..."
#: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx
#: src/pages/WelcomePage.tsx
msgid "Log in"
msgstr "Войти"
@@ -404,6 +449,10 @@ msgstr "Войти"
msgid "Logout"
msgstr "Выйти"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Long press"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/admin/AdminUsersPage.tsx
msgid "Manage users"
@@ -418,10 +467,12 @@ msgstr "Отметить все как прочитанное"
msgid "Mark all entries as read"
msgstr "Отметить все записи как прочитанные"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Mark as read"
msgstr "Отметить как прочитанное"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Mark as read up to here"
msgstr "Отметить как прочитанное до этого места"
@@ -430,6 +481,10 @@ msgstr "Отметить как прочитанное до этого мест
msgid "Metrics"
msgstr "Метрики"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Middle click"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Move the page down"
msgstr "Переместить страницу вниз"
@@ -482,19 +537,6 @@ msgstr "Нет больше записей"
msgid "Nothing found"
msgstr "Ничего не найдено"
#: src/pages/app/AddPage.tsx
msgid "OPML"
msgstr "ОПМЛ"
#: src/components/settings/ProfileSettings.tsx
msgid "OPML export"
msgstr "Экспорт OPML"
#: src/components/content/add/ImportOpml.tsx
#: src/components/content/add/ImportOpml.tsx
msgid "OPML file"
msgstr "OPML-файл"
#: src/pages/app/AboutPage.tsx
msgid "Oldest first"
msgstr "Сначала самые старые"
@@ -503,6 +545,10 @@ msgstr "Сначала самые старые"
msgid "Oops!"
msgstr "Ой!"
#: src/components/header/Header.tsx
msgid "Open CommaFeed"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open current entry in a new tab"
msgstr "Открыть текущую запись в новой вкладке"
@@ -515,6 +561,14 @@ msgstr "Открыть текущую запись в новой вкладке
msgid "Open link"
msgstr "Открыть ссылку"
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Open link in new background tab"
msgstr ""
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Open link in new tab"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open next entry"
msgstr "Открыть следующую запись"
@@ -527,6 +581,19 @@ msgstr "Открыть предыдущую запись"
msgid "Open/close current entry"
msgstr "Открыть/закрыть текущую запись"
#: src/pages/app/AddPage.tsx
msgid "OPML"
msgstr "ОПМЛ"
#: src/components/settings/ProfileSettings.tsx
msgid "OPML export"
msgstr "Экспорт OPML"
#: src/components/content/add/ImportOpml.tsx
#: src/components/content/add/ImportOpml.tsx
msgid "OPML file"
msgstr "OPML-файл"
#: src/pages/app/AboutPage.tsx
msgid "Order"
msgstr "Заказать"
@@ -564,10 +631,6 @@ msgstr "Позиция"
msgid "Profile"
msgstr "Профиль"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr "ОТДЫХА API"
#: src/pages/auth/PasswordRecoveryPage.tsx
msgid "Recover password"
msgstr "Восстановить пароль"
@@ -581,7 +644,16 @@ msgstr "Обновить"
msgid "Registrations are closed on this CommaFeed instance"
msgstr "Регистрация закрыта для этого экземпляра CommaFeed."
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr "ОТДЫХА API"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx
@@ -632,6 +704,14 @@ msgstr "Обмен сайтами"
msgid "Shift"
msgstr "Сдвиг"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Show entry menu (desktop)"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Show entry menu (mobile)"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Show feeds and categories with no unread entries"
msgstr "Показать каналы и категории без непрочитанных записей"
@@ -642,6 +722,7 @@ msgstr "Показать справку по сочетаниям клавиш."
#: src/pages/auth/RegistrationPage.tsx
#: src/pages/auth/RegistrationPage.tsx
#: src/pages/WelcomePage.tsx
msgid "Sign up"
msgstr "Зарегистрироваться"
@@ -654,6 +735,7 @@ msgstr "Только что случилось что-то плохое..."
msgid "Space"
msgstr "Пробел"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Star"
msgstr "Звезда"
@@ -669,23 +751,29 @@ msgstr "Помечено"
msgid "Subscribe"
msgstr "Подписаться"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "URL-адрес подписки"
#: src/components/content/add/Subscribe.tsx
msgid "Subscribe to the feed"
msgstr "Подписаться на ленту"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "URL-адрес подписки"
#: src/components/Alert.tsx
msgid "Success"
msgstr "Успех"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Swipe header to the right"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to dark theme"
msgstr "Переключиться на темную тему"
#: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to light theme"
msgstr "Переключиться на светлую тему"
@@ -709,10 +797,15 @@ msgstr "Переключить статус чтения текущей запи
msgid "Try out CommaFeed with the demo account: demo/demo"
msgstr "Попробуйте CommaFeed на демо-счете: demo/demo"
#: src/pages/WelcomePage.tsx
msgid "Try the demo!"
msgstr ""
#: src/components/header/Header.tsx
msgid "Unread"
msgstr "непрочитано"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Unstar"
msgstr "Снять пометку"
@@ -722,15 +815,15 @@ msgstr "Снять пометку"
msgid "Unsubscribe"
msgstr "Отписаться"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Имя пользователя"
#: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx
msgid "User Name or E-mail"
msgstr "Имя пользователя или адрес электронной почты"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Имя пользователя"
#: src/components/Alert.tsx
msgid "Warning"
msgstr "Предупреждение"
@@ -743,6 +836,6 @@ 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/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "требуется файл"
#: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh."
msgstr ""

View File

@@ -13,6 +13,14 @@ msgstr ""
"Language-Team: \n"
"Plural-Forms: \n"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "<0>CommaFeed is an open-source project. Sources are hosted on </0><1>GitHub</1>."
msgstr ""
#: src/pages/app/FeedDetailsPage.tsx
msgid "<0>Complete syntax is available </0><1>here</1>."
msgstr ""
@@ -21,14 +29,14 @@ msgstr ""
msgid "<0>Have an account?</0><1>Log in!</1>"
msgstr "<0>Máte účet?</0><1>Prihláste sa!</1>"
#: src/pages/app/DonatePage.tsx
msgid "<0>Hey,</0><1>I'm Jérémie from Belgium and I've been working on CommaFeed in my free time for over 10 years now. Thanks for taking an interest in helping me continue supporting CommaFeed.</1>"
msgstr ""
#: src/pages/auth/LoginPage.tsx
msgid "<0>Need an account?</0><1>Sign up!</1>"
msgstr "<0>Potrebujete účet?</0><1>Zaregistrujte sa!</1>"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "Kľúč API"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/AboutPage.tsx
msgid "About"
@@ -75,6 +83,10 @@ msgstr "Súbor opml je súbor XML obsahujúci adresy URL kanálov a kategórie.
msgid "Analyze feed"
msgstr "Analyzujte krmivo"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "Kľúč API"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Are you sure you want to delete category <0>{categoryName}</0>?"
msgstr "Naozaj chcete odstrániť kategóriu <0>{categoryName}</0>?"
@@ -123,6 +135,7 @@ msgstr "Rozšírenia prehliadača"
#: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx
@@ -150,10 +163,6 @@ msgstr "Zmena hesla vygeneruje nový kľúč API"
msgid "Check that the feed is working"
msgstr "Skontrolujte, či feed funguje"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>."
msgstr "CommaFeed je projekt s otvoreným zdrojom. "
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item"
msgstr "CommaFeed ďalšia neprečítaná položka"
@@ -194,6 +203,18 @@ msgstr ""
msgid "Current password"
msgstr "Aktuálne heslo"
#: src/pages/app/SettingsPage.tsx
msgid "Custom code"
msgstr ""
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom CSS rules that will be applied"
msgstr ""
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom JS code that will be executed on page load"
msgstr ""
#: src/pages/admin/AdminUsersPage.tsx
msgid "Date created"
msgstr "Dátum vytvorenia"
@@ -202,15 +223,15 @@ msgstr "Dátum vytvorenia"
msgid "Delete"
msgstr "Vymazať"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Vymažte kategóriu"
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
msgid "Delete account"
msgstr "Vymažte účet"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Vymažte kategóriu"
#: src/pages/admin/AdminUsersPage.tsx
msgid "Delete user"
msgstr "Vymažte používateľa"
@@ -219,11 +240,20 @@ msgstr "Vymažte používateľa"
msgid "Desc"
msgstr ""
#: src/components/header/ProfileMenu.tsx
msgid "Detailed"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/SettingsPage.tsx
msgid "Display"
msgstr "Displej"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/DonatePage.tsx
msgid "Donate"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "Download"
msgstr "Stiahnuť"
@@ -278,15 +308,28 @@ msgstr "Rozšírené"
msgid "Export your subscriptions and categories as an OPML file that can be imported in other feed reading services"
msgstr "Exportujte svoje odbery a kategórie ako súbor OPML, ktorý je možné importovať do iných služieb na čítanie informačných kanálov"
#: src/components/header/Header.tsx
#: src/pages/WelcomePage.tsx
msgid "Extension options"
msgstr ""
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "Názov informačného kanála"
#: src/components/content/add/Subscribe.tsx
#: src/components/content/add/Subscribe.tsx
#: src/pages/app/FeedDetailsPage.tsx
msgid "Feed URL"
msgstr "URL informačného kanála"
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "Názov informačného kanála"
#: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now"
msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr ""
#: src/pages/app/FeedDetailsPage.tsx
msgid "Filtering expression"
@@ -312,14 +355,18 @@ msgstr "Vygenerujte nový kľúč API"
msgid "Generated feed url"
msgstr "Generovaná adresa URL informačného kanála"
#: src/pages/app/AboutPage.tsx
msgid "Go to the API documentation."
msgstr "Prejdite na dokumentáciu API."
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Go to {0}"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Go to the All view"
msgstr "Prejdite na zobrazenie Všetky"
#: src/pages/app/AboutPage.tsx
msgid "Go to the API documentation."
msgstr "Prejdite na dokumentáciu API."
#: src/pages/app/AboutPage.tsx
msgid "Goodies"
msgstr "Dobrôtky"
@@ -336,10 +383,6 @@ msgstr "Ak nie je prázdny, výraz vyhodnotený ako 'pravda' alebo 'nepravda'. "
msgid "If you encounter an issue, please report it on the issues page of the GitHub project."
msgstr "Ak narazíte na problém, nahláste ho na stránke problémov projektu GitHub."
#: src/pages/app/AboutPage.tsx
msgid "If you like this project, please consider a donation to support the developer and help cover the costs of keeping this website online."
msgstr "Ak sa vám tento projekt páči, zvážte príspevok na podporu vývojára a pomôžte pokryť náklady na udržiavanie tejto webovej stránky online."
#: src/components/content/add/ImportOpml.tsx
msgid "Import"
msgstr ""
@@ -348,6 +391,7 @@ msgstr ""
msgid "In expanded view, scrolling through entries mark them as read"
msgstr "V rozšírenom zobrazení ich rolovanie cez položky označí ako prečítané"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Keep unread"
msgstr "Ponechať neprečítané"
@@ -397,6 +441,7 @@ msgstr "Načítavam značky..."
#: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx
#: src/pages/WelcomePage.tsx
msgid "Log in"
msgstr "Prihláste sa"
@@ -404,6 +449,10 @@ msgstr "Prihláste sa"
msgid "Logout"
msgstr "Odhlásenie"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Long press"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/admin/AdminUsersPage.tsx
msgid "Manage users"
@@ -418,10 +467,12 @@ msgstr "Označiť všetko ako prečítané"
msgid "Mark all entries as read"
msgstr "Označte všetky položky ako prečítané"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Mark as read"
msgstr "Označiť ako prečítané"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Mark as read up to here"
msgstr "Označiť ako prečítané až sem"
@@ -430,6 +481,10 @@ msgstr "Označiť ako prečítané až sem"
msgid "Metrics"
msgstr "Metriky"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Middle click"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Move the page down"
msgstr "Posuňte stránku nadol"
@@ -482,19 +537,6 @@ msgstr "Žiadne ďalšie záznamy"
msgid "Nothing found"
msgstr "Nič sa nenašlo"
#: src/pages/app/AddPage.tsx
msgid "OPML"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "OPML export"
msgstr "Export OPML"
#: src/components/content/add/ImportOpml.tsx
#: src/components/content/add/ImportOpml.tsx
msgid "OPML file"
msgstr "súbor OPML"
#: src/pages/app/AboutPage.tsx
msgid "Oldest first"
msgstr "Najprv najstarší"
@@ -503,6 +545,10 @@ msgstr "Najprv najstarší"
msgid "Oops!"
msgstr "Ojoj!"
#: src/components/header/Header.tsx
msgid "Open CommaFeed"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open current entry in a new tab"
msgstr "Otvorte aktuálny záznam na novej karte"
@@ -515,6 +561,14 @@ msgstr "Otvorte aktuálny záznam na novej karte na pozadí"
msgid "Open link"
msgstr "Otvoriť odkaz"
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Open link in new background tab"
msgstr ""
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Open link in new tab"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open next entry"
msgstr "Otvor ďalší záznam"
@@ -527,6 +581,19 @@ msgstr "Otvoriť predchádzajúci záznam"
msgid "Open/close current entry"
msgstr "Otvoriť/zatvoriť aktuálny záznam"
#: src/pages/app/AddPage.tsx
msgid "OPML"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "OPML export"
msgstr "Export OPML"
#: src/components/content/add/ImportOpml.tsx
#: src/components/content/add/ImportOpml.tsx
msgid "OPML file"
msgstr "súbor OPML"
#: src/pages/app/AboutPage.tsx
msgid "Order"
msgstr "Poriadok"
@@ -564,10 +631,6 @@ msgstr "Pozícia"
msgid "Profile"
msgstr "Profil"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/pages/auth/PasswordRecoveryPage.tsx
msgid "Recover password"
msgstr "Obnoviť heslo"
@@ -581,7 +644,16 @@ msgstr "Obnoviť"
msgid "Registrations are closed on this CommaFeed instance"
msgstr "V tejto inštancii CommaFeed sú registrácie uzavreté"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx
@@ -632,6 +704,14 @@ msgstr "Zdieľanie stránok"
msgid "Shift"
msgstr "Smena"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Show entry menu (desktop)"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Show entry menu (mobile)"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Show feeds and categories with no unread entries"
msgstr "Zobraziť kanály a kategórie bez neprečítaných záznamov"
@@ -642,6 +722,7 @@ msgstr "Zobraziť pomoc s klávesovými skratkami"
#: src/pages/auth/RegistrationPage.tsx
#: src/pages/auth/RegistrationPage.tsx
#: src/pages/WelcomePage.tsx
msgid "Sign up"
msgstr "Zaregistrujte sa"
@@ -654,6 +735,7 @@ msgstr "Práve sa stalo niečo zlé..."
msgid "Space"
msgstr "Vesmír"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Star"
msgstr "Hviezda"
@@ -669,23 +751,29 @@ msgstr "S hviezdičkou"
msgid "Subscribe"
msgstr "Prihlásiť sa"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "URL na odber"
#: src/components/content/add/Subscribe.tsx
msgid "Subscribe to the feed"
msgstr "Prihláste sa na odber kanála"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "URL na odber"
#: src/components/Alert.tsx
msgid "Success"
msgstr "Úspech"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Swipe header to the right"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to dark theme"
msgstr "Prepnúť na tmavú tému"
#: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to light theme"
msgstr "Prepnite na svetlú tému"
@@ -709,10 +797,15 @@ msgstr "Prepne stav čítania aktuálneho záznamu"
msgid "Try out CommaFeed with the demo account: demo/demo"
msgstr "Vyskúšajte CommaFeed s demo účtom: demo/demo"
#: src/pages/WelcomePage.tsx
msgid "Try the demo!"
msgstr ""
#: src/components/header/Header.tsx
msgid "Unread"
msgstr "Neprečítané"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Unstar"
msgstr "Odobrať hviezdičku"
@@ -722,15 +815,15 @@ msgstr "Odobrať hviezdičku"
msgid "Unsubscribe"
msgstr "Zrušte odber"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Meno používateľa"
#: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx
msgid "User Name or E-mail"
msgstr "Meno používateľa alebo e-mail"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Meno používateľa"
#: src/components/Alert.tsx
msgid "Warning"
msgstr "Varovanie"
@@ -743,6 +836,6 @@ 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/content/add/ImportOpml.tsx
msgid "file is required"
#: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh."
msgstr ""

View File

@@ -13,6 +13,14 @@ msgstr ""
"Language-Team: \n"
"Plural-Forms: \n"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "<0>CommaFeed is an open-source project. Sources are hosted on </0><1>GitHub</1>."
msgstr ""
#: src/pages/app/FeedDetailsPage.tsx
msgid "<0>Complete syntax is available </0><1>here</1>."
msgstr ""
@@ -21,14 +29,14 @@ msgstr ""
msgid "<0>Have an account?</0><1>Log in!</1>"
msgstr "<0>Har du ett konto?</0><1>Logga in!</1>"
#: src/pages/app/DonatePage.tsx
msgid "<0>Hey,</0><1>I'm Jérémie from Belgium and I've been working on CommaFeed in my free time for over 10 years now. Thanks for taking an interest in helping me continue supporting CommaFeed.</1>"
msgstr ""
#: src/pages/auth/LoginPage.tsx
msgid "<0>Need an account?</0><1>Sign up!</1>"
msgstr "<0>Behöver du ett konto?</0><1>Registrera dig!</1>"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "API-nyckel"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/AboutPage.tsx
msgid "About"
@@ -75,6 +83,10 @@ msgstr "En opml-fil är en XML-fil som innehåller feed-URL:er och kategorier. "
msgid "Analyze feed"
msgstr "Analysera foder"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "API-nyckel"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Are you sure you want to delete category <0>{categoryName}</0>?"
msgstr "Är du säker på att du vill ta bort kategori <0>{categoryName}</0>?"
@@ -123,6 +135,7 @@ msgstr "Webbläsartillägg"
#: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx
@@ -150,10 +163,6 @@ msgstr "Ändra lösenord kommer att generera en ny API-nyckel"
msgid "Check that the feed is working"
msgstr "Kontrollera att matningen fungerar"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>."
msgstr "CommaFeed är ett projekt med öppen källkod. "
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item"
msgstr "CommaFeed nästa olästa objekt"
@@ -194,6 +203,18 @@ msgstr ""
msgid "Current password"
msgstr "Aktuellt lösenord"
#: src/pages/app/SettingsPage.tsx
msgid "Custom code"
msgstr ""
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom CSS rules that will be applied"
msgstr ""
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom JS code that will be executed on page load"
msgstr ""
#: src/pages/admin/AdminUsersPage.tsx
msgid "Date created"
msgstr "Datum skapat"
@@ -202,15 +223,15 @@ msgstr "Datum skapat"
msgid "Delete"
msgstr "Ta bort"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Ta bort kategori"
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
msgid "Delete account"
msgstr "Radera konto"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Ta bort kategori"
#: src/pages/admin/AdminUsersPage.tsx
msgid "Delete user"
msgstr "Ta bort användare"
@@ -219,11 +240,20 @@ msgstr "Ta bort användare"
msgid "Desc"
msgstr ""
#: src/components/header/ProfileMenu.tsx
msgid "Detailed"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/SettingsPage.tsx
msgid "Display"
msgstr "Visa"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/DonatePage.tsx
msgid "Donate"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "Download"
msgstr "Ladda ner"
@@ -278,15 +308,28 @@ msgstr "Utökad"
msgid "Export your subscriptions and categories as an OPML file that can be imported in other feed reading services"
msgstr "Exportera dina prenumerationer och kategorier som en OPML-fil som kan importeras i andra flödesläsningstjänster"
#: src/components/header/Header.tsx
#: src/pages/WelcomePage.tsx
msgid "Extension options"
msgstr ""
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "Flödesnamn"
#: src/components/content/add/Subscribe.tsx
#: src/components/content/add/Subscribe.tsx
#: src/pages/app/FeedDetailsPage.tsx
msgid "Feed URL"
msgstr "Flödes-URL"
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "Flödesnamn"
#: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now"
msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "fil krävs"
#: src/pages/app/FeedDetailsPage.tsx
msgid "Filtering expression"
@@ -312,14 +355,18 @@ msgstr "Generera ny API-nyckel"
msgid "Generated feed url"
msgstr "Genererad feed-url"
#: src/pages/app/AboutPage.tsx
msgid "Go to the API documentation."
msgstr "Gå till API-dokumentationen."
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Go to {0}"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Go to the All view"
msgstr "Gå till vyn Alla"
#: src/pages/app/AboutPage.tsx
msgid "Go to the API documentation."
msgstr "Gå till API-dokumentationen."
#: src/pages/app/AboutPage.tsx
msgid "Goodies"
msgstr "Godsaker"
@@ -336,10 +383,6 @@ msgstr "Om det inte är tomt, ett uttryck som utvärderas till 'sant' eller 'fal
msgid "If you encounter an issue, please report it on the issues page of the GitHub project."
msgstr "Om du stöter på ett problem, vänligen rapportera det på problemsidan för GitHub-projektet."
#: src/pages/app/AboutPage.tsx
msgid "If you like this project, please consider a donation to support the developer and help cover the costs of keeping this website online."
msgstr "Om du gillar det här projektet, vänligen överväg en donation för att stödja utvecklaren och hjälpa till att täcka kostnaderna för att hålla denna webbplats online."
#: src/components/content/add/ImportOpml.tsx
msgid "Import"
msgstr ""
@@ -348,6 +391,7 @@ msgstr ""
msgid "In expanded view, scrolling through entries mark them as read"
msgstr "I utökad vy, rullning genom poster markerar dem som lästa"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Keep unread"
msgstr "Behåll oläst"
@@ -397,6 +441,7 @@ msgstr "Laddar taggar..."
#: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx
#: src/pages/WelcomePage.tsx
msgid "Log in"
msgstr "Logga in"
@@ -404,6 +449,10 @@ msgstr "Logga in"
msgid "Logout"
msgstr "Logga ut"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Long press"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/admin/AdminUsersPage.tsx
msgid "Manage users"
@@ -418,10 +467,12 @@ msgstr "Markera alla som lästa"
msgid "Mark all entries as read"
msgstr "Markera alla poster som lästa"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Mark as read"
msgstr "Markera som läst"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Mark as read up to here"
msgstr "Markera som läst hit"
@@ -430,6 +481,10 @@ msgstr "Markera som läst hit"
msgid "Metrics"
msgstr "Mätverk"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Middle click"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Move the page down"
msgstr "Flytta sidan nedåt"
@@ -482,19 +537,6 @@ msgstr "Inga fler poster"
msgid "Nothing found"
msgstr "Inget hittades"
#: src/pages/app/AddPage.tsx
msgid "OPML"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "OPML export"
msgstr ""
#: src/components/content/add/ImportOpml.tsx
#: src/components/content/add/ImportOpml.tsx
msgid "OPML file"
msgstr "OPML-fil"
#: src/pages/app/AboutPage.tsx
msgid "Oldest first"
msgstr "Äldst först"
@@ -503,6 +545,10 @@ msgstr "Äldst först"
msgid "Oops!"
msgstr "Hoppsan!"
#: src/components/header/Header.tsx
msgid "Open CommaFeed"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open current entry in a new tab"
msgstr "Öppna aktuell post i en ny flik"
@@ -515,6 +561,14 @@ msgstr "Öppna aktuell post i en ny flik i bakgrunden"
msgid "Open link"
msgstr "Öppen länk"
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Open link in new background tab"
msgstr ""
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Open link in new tab"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open next entry"
msgstr "Öppna nästa post"
@@ -527,6 +581,19 @@ msgstr "Öppna föregående post"
msgid "Open/close current entry"
msgstr "Öppna/stäng aktuell ingång"
#: src/pages/app/AddPage.tsx
msgid "OPML"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "OPML export"
msgstr ""
#: src/components/content/add/ImportOpml.tsx
#: src/components/content/add/ImportOpml.tsx
msgid "OPML file"
msgstr "OPML-fil"
#: src/pages/app/AboutPage.tsx
msgid "Order"
msgstr "Beställning"
@@ -564,10 +631,6 @@ msgstr ""
msgid "Profile"
msgstr "Profil"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/pages/auth/PasswordRecoveryPage.tsx
msgid "Recover password"
msgstr "Återställ lösenord"
@@ -581,7 +644,16 @@ msgstr "Uppdatera"
msgid "Registrations are closed on this CommaFeed instance"
msgstr "Registreringar är stängda på denna CommaFeed-instans"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx
@@ -632,6 +704,14 @@ msgstr "Delningssajter"
msgid "Shift"
msgstr "Skift"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Show entry menu (desktop)"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Show entry menu (mobile)"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Show feeds and categories with no unread entries"
msgstr "Visa flöden och kategorier utan olästa poster"
@@ -642,6 +722,7 @@ msgstr "Visa kortkommandohjälp"
#: src/pages/auth/RegistrationPage.tsx
#: src/pages/auth/RegistrationPage.tsx
#: src/pages/WelcomePage.tsx
msgid "Sign up"
msgstr "Anmäl dig"
@@ -654,6 +735,7 @@ msgstr "Något dåligt hände precis..."
msgid "Space"
msgstr "Rymden"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Star"
msgstr "Stjärna"
@@ -669,23 +751,29 @@ msgstr "Starmed"
msgid "Subscribe"
msgstr "Prenumerera"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "Prenumerera URL"
#: src/components/content/add/Subscribe.tsx
msgid "Subscribe to the feed"
msgstr "Prenumerera på flödet"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "Prenumerera URL"
#: src/components/Alert.tsx
msgid "Success"
msgstr "Framgång"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Swipe header to the right"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to dark theme"
msgstr "Byt till mörkt tema"
#: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to light theme"
msgstr "Byt till ljustema"
@@ -709,10 +797,15 @@ msgstr "Växla lässtatus för aktuell post"
msgid "Try out CommaFeed with the demo account: demo/demo"
msgstr "Prova CommaFeed med demokontot: demo/demo"
#: src/pages/WelcomePage.tsx
msgid "Try the demo!"
msgstr ""
#: src/components/header/Header.tsx
msgid "Unread"
msgstr "Oläst"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Unstar"
msgstr ""
@@ -722,15 +815,15 @@ msgstr ""
msgid "Unsubscribe"
msgstr "Avregistrera"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Användarnamn"
#: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx
msgid "User Name or E-mail"
msgstr "Användarnamn eller e-post"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Användarnamn"
#: src/components/Alert.tsx
msgid "Warning"
msgstr "Varning"
@@ -743,6 +836,6 @@ 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/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "fil krävs"
#: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh."
msgstr ""

View File

@@ -13,6 +13,14 @@ msgstr ""
"Language-Team: \n"
"Plural-Forms: \n"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "<0>CommaFeed is an open-source project. Sources are hosted on </0><1>GitHub</1>."
msgstr ""
#: src/pages/app/FeedDetailsPage.tsx
msgid "<0>Complete syntax is available </0><1>here</1>."
msgstr ""
@@ -21,14 +29,14 @@ msgstr ""
msgid "<0>Have an account?</0><1>Log in!</1>"
msgstr "<0>Hesabınız var mı?</0><1>Giriş yapın!</1>"
#: src/pages/app/DonatePage.tsx
msgid "<0>Hey,</0><1>I'm Jérémie from Belgium and I've been working on CommaFeed in my free time for over 10 years now. Thanks for taking an interest in helping me continue supporting CommaFeed.</1>"
msgstr ""
#: src/pages/auth/LoginPage.tsx
msgid "<0>Need an account?</0><1>Sign up!</1>"
msgstr "<0>Bir hesaba mı ihtiyacınız var?</0><1>Kaydolun!</1>"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "API anahtarı"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/AboutPage.tsx
msgid "About"
@@ -75,6 +83,10 @@ msgstr "Bir opml dosyası, besleme URL'lerini ve kategorilerini içeren bir XML
msgid "Analyze feed"
msgstr "Feed'i analiz et"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "API anahtarı"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Are you sure you want to delete category <0>{categoryName}</0>?"
msgstr "<0>{categoryName}</0> kategorisini silmek istediğinizden emin misiniz?"
@@ -123,6 +135,7 @@ msgstr "Tarayıcı uzantıları"
#: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx
@@ -150,10 +163,6 @@ msgstr "Şifreyi değiştirmek yeni bir API anahtarı oluşturacak"
msgid "Check that the feed is working"
msgstr "Feed'in çalışıp çalışmadığını kontrol edin"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>."
msgstr "CommaFeed açık kaynaklı bir projedir. "
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item"
msgstr "CommaFeed sonraki okunmamış öğe"
@@ -194,6 +203,18 @@ msgstr ""
msgid "Current password"
msgstr "Geçerli şifre"
#: src/pages/app/SettingsPage.tsx
msgid "Custom code"
msgstr ""
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom CSS rules that will be applied"
msgstr ""
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom JS code that will be executed on page load"
msgstr ""
#: src/pages/admin/AdminUsersPage.tsx
msgid "Date created"
msgstr "Oluşturulma tarihi"
@@ -202,15 +223,15 @@ msgstr "Oluşturulma tarihi"
msgid "Delete"
msgstr "Sil"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Kategoriyi Sil"
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
msgid "Delete account"
msgstr "Hesabı sil"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Kategoriyi Sil"
#: src/pages/admin/AdminUsersPage.tsx
msgid "Delete user"
msgstr "Kullanıcıyı sil"
@@ -219,11 +240,20 @@ msgstr "Kullanıcıyı sil"
msgid "Desc"
msgstr "Açılış"
#: src/components/header/ProfileMenu.tsx
msgid "Detailed"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/SettingsPage.tsx
msgid "Display"
msgstr "Ekran"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/DonatePage.tsx
msgid "Donate"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "Download"
msgstr "İndir"
@@ -278,15 +308,28 @@ msgstr "Genişletilmiş"
msgid "Export your subscriptions and categories as an OPML file that can be imported in other feed reading services"
msgstr "Aboneliklerinizi ve kategorilerinizi diğer besleme okuma hizmetlerinde içe aktarılabilen bir OPML dosyası olarak dışa aktarın"
#: src/components/header/Header.tsx
#: src/pages/WelcomePage.tsx
msgid "Extension options"
msgstr ""
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "Yayın adı"
#: src/components/content/add/Subscribe.tsx
#: src/components/content/add/Subscribe.tsx
#: src/pages/app/FeedDetailsPage.tsx
msgid "Feed URL"
msgstr "Feed URL'si"
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "Yayın adı"
#: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now"
msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "dosya gerekli"
#: src/pages/app/FeedDetailsPage.tsx
msgid "Filtering expression"
@@ -312,14 +355,18 @@ msgstr "Yeni API anahtarı oluştur"
msgid "Generated feed url"
msgstr "Oluşturulan besleme url'si"
#: src/pages/app/AboutPage.tsx
msgid "Go to the API documentation."
msgstr "API belgelerine gidin."
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Go to {0}"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Go to the All view"
msgstr "Tümü görünümüne git"
#: src/pages/app/AboutPage.tsx
msgid "Go to the API documentation."
msgstr "API belgelerine gidin."
#: src/pages/app/AboutPage.tsx
msgid "Goodies"
msgstr "İyilikler"
@@ -336,10 +383,6 @@ msgstr "Boş değilse, 'doğru' veya 'yanlış' olarak değerlendirilen bir ifad
msgid "If you encounter an issue, please report it on the issues page of the GitHub project."
msgstr "Bir sorunla karşılaşırsanız lütfen GitHub projesinin sorunlar sayfasında bildirin."
#: src/pages/app/AboutPage.tsx
msgid "If you like this project, please consider a donation to support the developer and help cover the costs of keeping this website online."
msgstr "Bu projeyi beğendiyseniz, lütfen geliştiriciyi desteklemek ve bu web sitesini çevrimiçi tutma maliyetlerini karşılamaya yardımcı olmak için bir bağış yapmayı düşünün."
#: src/components/content/add/ImportOpml.tsx
msgid "Import"
msgstr "İçe Aktar"
@@ -348,6 +391,7 @@ msgstr "İçe Aktar"
msgid "In expanded view, scrolling through entries mark them as read"
msgstr "Genişletilmiş görünümde, girişler arasında gezinmek onları okundu olarak işaretler"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Keep unread"
msgstr "Okunmadan sakla"
@@ -397,6 +441,7 @@ msgstr "Etiketler yükleniyor..."
#: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx
#: src/pages/WelcomePage.tsx
msgid "Log in"
msgstr "Giriş"
@@ -404,6 +449,10 @@ msgstr "Giriş"
msgid "Logout"
msgstr "Çıkış"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Long press"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/admin/AdminUsersPage.tsx
msgid "Manage users"
@@ -418,10 +467,12 @@ msgstr "Tümünü okundu olarak işaretle"
msgid "Mark all entries as read"
msgstr "Tüm girişleri okundu olarak işaretle"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Mark as read"
msgstr "Okundu olarak işaretle"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Mark as read up to here"
msgstr "Buraya kadar okundu olarak işaretle"
@@ -430,6 +481,10 @@ msgstr "Buraya kadar okundu olarak işaretle"
msgid "Metrics"
msgstr "Metrikler"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Middle click"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Move the page down"
msgstr "Sayfayı aşağı taşı"
@@ -482,19 +537,6 @@ msgstr "Başka giriş yok"
msgid "Nothing found"
msgstr "Hiçbir şey bulunamadı"
#: src/pages/app/AddPage.tsx
msgid "OPML"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "OPML export"
msgstr "OPML dışa aktarma"
#: src/components/content/add/ImportOpml.tsx
#: src/components/content/add/ImportOpml.tsx
msgid "OPML file"
msgstr "OPML dosyası"
#: src/pages/app/AboutPage.tsx
msgid "Oldest first"
msgstr "Önce en eski"
@@ -503,6 +545,10 @@ msgstr "Önce en eski"
msgid "Oops!"
msgstr "Hata!"
#: src/components/header/Header.tsx
msgid "Open CommaFeed"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open current entry in a new tab"
msgstr "Geçerli girişi yeni bir sekmede aç"
@@ -515,6 +561,14 @@ msgstr "Geçerli girişi arka planda yeni bir sekmede aç"
msgid "Open link"
msgstr "Bağlantıyı aç"
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Open link in new background tab"
msgstr ""
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Open link in new tab"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open next entry"
msgstr "Sonraki girişi aç"
@@ -527,6 +581,19 @@ msgstr "Önceki girişi aç"
msgid "Open/close current entry"
msgstr "Geçerli girişi aç/kapat"
#: src/pages/app/AddPage.tsx
msgid "OPML"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "OPML export"
msgstr "OPML dışa aktarma"
#: src/components/content/add/ImportOpml.tsx
#: src/components/content/add/ImportOpml.tsx
msgid "OPML file"
msgstr "OPML dosyası"
#: src/pages/app/AboutPage.tsx
msgid "Order"
msgstr "Sipariş"
@@ -564,10 +631,6 @@ msgstr "Konum"
msgid "Profile"
msgstr "Profil"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/pages/auth/PasswordRecoveryPage.tsx
msgid "Recover password"
msgstr "Şifreyi kurtar"
@@ -581,7 +644,16 @@ msgstr "Yenile"
msgid "Registrations are closed on this CommaFeed instance"
msgstr "Bu CommaFeed örneğinde kayıtlar kapalı"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx
@@ -632,6 +704,14 @@ msgstr "Siteleri paylaşma"
msgid "Shift"
msgstr "Vardiya"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Show entry menu (desktop)"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Show entry menu (mobile)"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Show feeds and categories with no unread entries"
msgstr "Okunmamış girişi olmayan beslemeleri ve kategorileri göster"
@@ -642,6 +722,7 @@ msgstr "Klavye kısayolu yardımını göster"
#: src/pages/auth/RegistrationPage.tsx
#: src/pages/auth/RegistrationPage.tsx
#: src/pages/WelcomePage.tsx
msgid "Sign up"
msgstr "Kaydolun"
@@ -654,6 +735,7 @@ msgstr "Az önce kötü bir şey oldu..."
msgid "Space"
msgstr "Uzay"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Star"
msgstr "Yıldız"
@@ -669,23 +751,29 @@ msgstr "Yıldızlı"
msgid "Subscribe"
msgstr "Abone ol"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "Abone URL'si"
#: src/components/content/add/Subscribe.tsx
msgid "Subscribe to the feed"
msgstr "beslemeye abone olun"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "Abone URL'si"
#: src/components/Alert.tsx
msgid "Success"
msgstr "Başarı"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Swipe header to the right"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to dark theme"
msgstr "Karanlık temaya geç"
#: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to light theme"
msgstr "Açık temaya geç"
@@ -709,10 +797,15 @@ msgstr "Geçerli girişin okuma durumunu değiştir"
msgid "Try out CommaFeed with the demo account: demo/demo"
msgstr "CommaFeed'i demo hesabıyla deneyin: demo/demo"
#: src/pages/WelcomePage.tsx
msgid "Try the demo!"
msgstr ""
#: src/components/header/Header.tsx
msgid "Unread"
msgstr "Okunmadı"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Unstar"
msgstr "Yıldızı kaldır"
@@ -722,15 +815,15 @@ msgstr "Yıldızı kaldır"
msgid "Unsubscribe"
msgstr "Aboneliği iptal et"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Kullanıcı adı"
#: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx
msgid "User Name or E-mail"
msgstr "Kullanıcı Adı veya E-posta"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Kullanıcı adı"
#: src/components/Alert.tsx
msgid "Warning"
msgstr "Uyarı"
@@ -743,6 +836,6 @@ 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/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "dosya gerekli"
#: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh."
msgstr ""

View File

@@ -13,6 +13,14 @@ msgstr ""
"Language-Team: \n"
"Plural-Forms: \n"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "<0>CommaFeed is an open-source project. Sources are hosted on </0><1>GitHub</1>."
msgstr ""
#: src/pages/app/FeedDetailsPage.tsx
msgid "<0>Complete syntax is available </0><1>here</1>."
msgstr ""
@@ -21,14 +29,14 @@ msgstr ""
msgid "<0>Have an account?</0><1>Log in!</1>"
msgstr "<0>有帐号吗?</0><1>登录!</1>"
#: src/pages/app/DonatePage.tsx
msgid "<0>Hey,</0><1>I'm Jérémie from Belgium and I've been working on CommaFeed in my free time for over 10 years now. Thanks for taking an interest in helping me continue supporting CommaFeed.</1>"
msgstr ""
#: src/pages/auth/LoginPage.tsx
msgid "<0>Need an account?</0><1>Sign up!</1>"
msgstr "<0>需要一个帐户?</0><1>注册!</1>"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "API 密钥"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/AboutPage.tsx
msgid "About"
@@ -75,6 +83,10 @@ msgstr "opml 文件是包含提要 URL 和类别的 XML 文件。"
msgid "Analyze feed"
msgstr "分析饲料"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "API 密钥"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Are you sure you want to delete category <0>{categoryName}</0>?"
msgstr "您确定要删除类别<0>{categoryName}</0>吗?"
@@ -123,6 +135,7 @@ msgstr "浏览器扩展"
#: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx
@@ -150,10 +163,6 @@ msgstr "更改密码将生成新的 API 密钥"
msgid "Check that the feed is working"
msgstr "检查提要是否正常工作"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>."
msgstr "CommaFeed 是一个开源项目。"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item"
msgstr "CommaFeed 下一个未读项目"
@@ -194,6 +203,18 @@ msgstr "控制"
msgid "Current password"
msgstr "当前密码"
#: src/pages/app/SettingsPage.tsx
msgid "Custom code"
msgstr ""
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom CSS rules that will be applied"
msgstr ""
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom JS code that will be executed on page load"
msgstr ""
#: src/pages/admin/AdminUsersPage.tsx
msgid "Date created"
msgstr "创建日期"
@@ -202,15 +223,15 @@ msgstr "创建日期"
msgid "Delete"
msgstr "删除"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "删除类别"
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
msgid "Delete account"
msgstr "删除帐号"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "删除类别"
#: src/pages/admin/AdminUsersPage.tsx
msgid "Delete user"
msgstr "删除用户"
@@ -219,11 +240,20 @@ msgstr "删除用户"
msgid "Desc"
msgstr "描述"
#: src/components/header/ProfileMenu.tsx
msgid "Detailed"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/SettingsPage.tsx
msgid "Display"
msgstr "显示"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/DonatePage.tsx
msgid "Donate"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "Download"
msgstr "下载"
@@ -278,15 +308,28 @@ msgstr "展开"
msgid "Export your subscriptions and categories as an OPML file that can be imported in other feed reading services"
msgstr "将您的订阅和类别导出为 OPML 文件,可以在其他提要阅读服务中导入"
#: src/components/header/Header.tsx
#: src/pages/WelcomePage.tsx
msgid "Extension options"
msgstr ""
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "提要名称"
#: src/components/content/add/Subscribe.tsx
#: src/components/content/add/Subscribe.tsx
#: src/pages/app/FeedDetailsPage.tsx
msgid "Feed URL"
msgstr "供稿网址"
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "提要名称"
#: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now"
msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "文件是必需的"
#: src/pages/app/FeedDetailsPage.tsx
msgid "Filtering expression"
@@ -312,14 +355,18 @@ msgstr "生成新的 API 密钥"
msgid "Generated feed url"
msgstr "生成的提要网址"
#: src/pages/app/AboutPage.tsx
msgid "Go to the API documentation."
msgstr "转到 API 文档。"
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Go to {0}"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Go to the All view"
msgstr "转到全部视图"
#: src/pages/app/AboutPage.tsx
msgid "Go to the API documentation."
msgstr "转到 API 文档。"
#: src/pages/app/AboutPage.tsx
msgid "Goodies"
msgstr "好东西"
@@ -336,10 +383,6 @@ msgstr "如果不为空,则表达式评估为“真”或“假”。"
msgid "If you encounter an issue, please report it on the issues page of the GitHub project."
msgstr "如果遇到问题请在GitHub项目的issues页面上报告。"
#: src/pages/app/AboutPage.tsx
msgid "If you like this project, please consider a donation to support the developer and help cover the costs of keeping this website online."
msgstr "如果您喜欢这个项目,请考虑捐款以支持开发人员并帮助支付保持此网站在线的费用。"
#: src/components/content/add/ImportOpml.tsx
msgid "Import"
msgstr "进口"
@@ -348,6 +391,7 @@ msgstr "进口"
msgid "In expanded view, scrolling through entries mark them as read"
msgstr "在展开视图中,滚动条目将它们标记为已读"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Keep unread"
msgstr "保持未读状态"
@@ -397,6 +441,7 @@ msgstr "正在加载标签..."
#: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx
#: src/pages/WelcomePage.tsx
msgid "Log in"
msgstr "登录"
@@ -404,6 +449,10 @@ msgstr "登录"
msgid "Logout"
msgstr "注销"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Long press"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/admin/AdminUsersPage.tsx
msgid "Manage users"
@@ -418,10 +467,12 @@ msgstr "全部标记为已读"
msgid "Mark all entries as read"
msgstr "将所有条目标记为已读"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Mark as read"
msgstr "标记为已读"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Mark as read up to here"
msgstr "标记为已读到这里"
@@ -430,6 +481,10 @@ msgstr "标记为已读到这里"
msgid "Metrics"
msgstr "指标"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Middle click"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Move the page down"
msgstr "页面下移"
@@ -482,19 +537,6 @@ msgstr "没有更多条目"
msgid "Nothing found"
msgstr "没有找到"
#: src/pages/app/AddPage.tsx
msgid "OPML"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "OPML export"
msgstr "OPML 导出"
#: src/components/content/add/ImportOpml.tsx
#: src/components/content/add/ImportOpml.tsx
msgid "OPML file"
msgstr "OPML 文件"
#: src/pages/app/AboutPage.tsx
msgid "Oldest first"
msgstr "最早的优先"
@@ -503,6 +545,10 @@ msgstr "最早的优先"
msgid "Oops!"
msgstr "哎呀!"
#: src/components/header/Header.tsx
msgid "Open CommaFeed"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open current entry in a new tab"
msgstr "在新选项卡中打开当前条目"
@@ -515,6 +561,14 @@ msgstr "在后台的新选项卡中打开当前条目"
msgid "Open link"
msgstr "打开链接"
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Open link in new background tab"
msgstr ""
#: src/components/content/FeedEntryContextMenu.tsx
msgid "Open link in new tab"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open next entry"
msgstr "打开下一个条目"
@@ -527,6 +581,19 @@ msgstr "打开上一个条目"
msgid "Open/close current entry"
msgstr "打开/关闭当前条目"
#: src/pages/app/AddPage.tsx
msgid "OPML"
msgstr ""
#: src/components/settings/ProfileSettings.tsx
msgid "OPML export"
msgstr "OPML 导出"
#: src/components/content/add/ImportOpml.tsx
#: src/components/content/add/ImportOpml.tsx
msgid "OPML file"
msgstr "OPML 文件"
#: src/pages/app/AboutPage.tsx
msgid "Order"
msgstr "订单"
@@ -564,10 +631,6 @@ msgstr "位置"
msgid "Profile"
msgstr "配置文件"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/pages/auth/PasswordRecoveryPage.tsx
msgid "Recover password"
msgstr "找回密码"
@@ -581,7 +644,16 @@ msgstr "刷新"
msgid "Registrations are closed on this CommaFeed instance"
msgstr "此 CommaFeed 实例上的注册已关闭"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx
@@ -632,6 +704,14 @@ msgstr "共享站点"
msgid "Shift"
msgstr "换档"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Show entry menu (desktop)"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Show entry menu (mobile)"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Show feeds and categories with no unread entries"
msgstr "显示没有未读条目的提要和类别"
@@ -642,6 +722,7 @@ msgstr "显示键盘快捷键帮助"
#: src/pages/auth/RegistrationPage.tsx
#: src/pages/auth/RegistrationPage.tsx
#: src/pages/WelcomePage.tsx
msgid "Sign up"
msgstr "注册"
@@ -654,6 +735,7 @@ msgstr "刚刚发生了不好的事情……"
msgid "Space"
msgstr "空间"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Star"
msgstr "星星"
@@ -669,23 +751,29 @@ msgstr "已加星标"
msgid "Subscribe"
msgstr "订阅"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "订阅网址"
#: src/components/content/add/Subscribe.tsx
msgid "Subscribe to the feed"
msgstr "订阅订阅源"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "订阅网址"
#: src/components/Alert.tsx
msgid "Success"
msgstr "成功"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Swipe header to the right"
msgstr ""
#: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to dark theme"
msgstr "切换到深色主题"
#: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to light theme"
msgstr "切换到浅色主题"
@@ -709,10 +797,15 @@ msgstr "切换当前条目的读取状态"
msgid "Try out CommaFeed with the demo account: demo/demo"
msgstr "使用演示帐户试用 CommaFeeddemo/demo"
#: src/pages/WelcomePage.tsx
msgid "Try the demo!"
msgstr ""
#: src/components/header/Header.tsx
msgid "Unread"
msgstr "未读"
#: src/components/content/FeedEntryContextMenu.tsx
#: src/components/content/FeedEntryFooter.tsx
msgid "Unstar"
msgstr "解星"
@@ -722,15 +815,15 @@ msgstr "解星"
msgid "Unsubscribe"
msgstr "取消订阅"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "用户名"
#: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx
msgid "User Name or E-mail"
msgstr "用户名或电子邮件"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "用户名"
#: src/components/Alert.tsx
msgid "Warning"
msgstr "警告"
@@ -743,6 +836,6 @@ 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/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "文件是必需的"
#: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh."
msgstr ""

View File

@@ -0,0 +1,4 @@
html, body {
/* disable pull-to-refresh on mobile as it messes with vertical scrolling */
overscroll-behavior: none;
}

View File

@@ -1,10 +1,12 @@
import "@fontsource/open-sans"
import { App } from "App"
import { store } from "app/store"
import dayjs from "dayjs"
import relativeTime from "dayjs/plugin/relativeTime"
import "main.css"
import "react-contexify/ReactContexify.css"
import ReactDOM from "react-dom/client"
import { Provider } from "react-redux"
import { App } from "./App"
dayjs.extend(relativeTime)

View File

@@ -13,7 +13,7 @@ const useStyles = createStyles(theme => ({
fontWeight: "bold",
fontSize: 120,
lineHeight: 1,
marginBottom: theme.spacing.xl * 1.5,
marginBottom: `calc(${theme.spacing.xl} * 1.5)`,
color: theme.colors[theme.primaryColor][3],
},
@@ -27,7 +27,7 @@ const useStyles = createStyles(theme => ({
maxWidth: 540,
margin: "auto",
marginTop: theme.spacing.xl,
marginBottom: theme.spacing.xl * 1.5,
marginBottom: `calc(${theme.spacing.xl} * 1.5)`,
},
}))

View File

@@ -1,5 +1,5 @@
import { Center, Title } from "@mantine/core"
import { Logo } from "../components/Logo"
import { Logo } from "components/Logo"
export function PageTitle() {
return (

View File

@@ -0,0 +1,143 @@
import { Trans } from "@lingui/macro"
import { Anchor, Box, Center, Container, Divider, Group, Image, Title, useMantineColorScheme } from "@mantine/core"
import { useMediaQuery } from "@mantine/hooks"
import { client } from "app/client"
import { Constants } from "app/constants"
import { redirectToApiDocumentation, redirectToLogin, redirectToRegistration, redirectToRootCategory } from "app/slices/redirect"
import { useAppDispatch, useAppSelector } from "app/store"
import welcome_page_dark from "assets/welcome_page_dark.png"
import welcome_page_light from "assets/welcome_page_light.png"
import { ActionButton } from "components/ActionButtton"
import { ButtonToolbar } from "components/ButtonToolbar"
import { useBrowserExtension } from "hooks/useBrowserExtension"
import { useAsyncCallback } from "react-async-hook"
import { SiGithub, SiTwitter } from "react-icons/si"
import { TbClock, TbKey, TbMoon, TbSettings, TbSun, TbUserPlus } from "react-icons/tb"
import { PageTitle } from "./PageTitle"
export function WelcomePage() {
const { colorScheme } = useMantineColorScheme()
const image = colorScheme === "light" ? welcome_page_light : welcome_page_dark
return (
<Container>
<Header />
<Center my="xl">
<Title order={3}>Bloat-free feed reader</Title>
</Center>
<Divider my="xl" />
<Image src={image} />
<Divider my="xl" />
<Footer />
</Container>
)
}
function Header() {
const mobile = !useMediaQuery(`(min-width: ${Constants.layout.mobileBreakpoint})`)
if (mobile) {
return (
<>
<PageTitle />
<Center>
<Buttons />
</Center>
</>
)
}
return (
<Group position="apart">
<PageTitle />
<Buttons />
</Group>
)
}
function Buttons() {
const iconSize = 18
const serverInfos = useAppSelector(state => state.server.serverInfos)
const { colorScheme, toggleColorScheme } = useMantineColorScheme()
const { isBrowserExtension, openSettingsPage } = useBrowserExtension()
const dispatch = useAppDispatch()
const dark = colorScheme === "dark"
const login = useAsyncCallback(client.user.login, {
onSuccess: () => {
dispatch(redirectToRootCategory())
},
})
return (
<ButtonToolbar>
{serverInfos?.demoAccountEnabled && (
<ActionButton
label={<Trans>Try the demo!</Trans>}
icon={<TbClock size={iconSize} />}
variant="outline"
onClick={() => login.execute({ name: "demo", password: "demo" })}
showLabelOnMobile
/>
)}
<ActionButton
label={<Trans>Log in</Trans>}
icon={<TbKey size={iconSize} />}
variant="outline"
onClick={() => dispatch(redirectToLogin())}
showLabelOnMobile
/>
{serverInfos?.allowRegistrations && (
<ActionButton
label={<Trans>Sign up</Trans>}
icon={<TbUserPlus size={iconSize} />}
variant="filled"
onClick={() => dispatch(redirectToRegistration())}
showLabelOnMobile
/>
)}
<ActionButton
label={dark ? <Trans>Switch to light theme</Trans> : <Trans>Switch to dark theme</Trans>}
icon={colorScheme === "dark" ? <TbSun size={18} /> : <TbMoon size={iconSize} />}
onClick={() => toggleColorScheme()}
hideLabelOnDesktop
/>
{isBrowserExtension && (
<ActionButton
label={<Trans>Extension options</Trans>}
icon={<TbSettings size={iconSize} />}
onClick={() => openSettingsPage()}
hideLabelOnDesktop
/>
)}
</ButtonToolbar>
)
}
function Footer() {
const dispatch = useAppDispatch()
return (
<Group position="apart">
<Group>
<span>© CommaFeed</span>
<Anchor variant="text" href="https://github.com/Athou/commafeed/" target="_blank" rel="noreferrer">
<SiGithub />
</Anchor>
<Anchor variant="text" href="https://twitter.com/CommaFeed" target="_blank" rel="noreferrer">
<SiTwitter />
</Anchor>
</Group>
<Box>
<Anchor variant="text" onClick={() => dispatch(redirectToApiDocumentation())}>
API documentation
</Anchor>
</Box>
</Group>
)
}

View File

@@ -1,4 +1,4 @@
import { t, Trans } from "@lingui/macro"
import { Trans } from "@lingui/macro"
import { ActionIcon, Box, Code, Container, Group, Table, Text, Title, useMantineTheme } from "@mantine/core"
import { closeAllModals, openConfirmModal, openModal } from "@mantine/modals"
import { client, errorToStrings } from "app/client"
@@ -7,6 +7,7 @@ import { UserEdit } from "components/admin/UserEdit"
import { Alert } from "components/Alert"
import { Loader } from "components/Loader"
import { RelativeDate } from "components/RelativeDate"
import { ReactNode } from "react"
import { useAsync, useAsyncCallback } from "react-async-hook"
import { TbCheck, TbPencil, TbPlus, TbTrash, TbX } from "react-icons/tb"
@@ -26,7 +27,7 @@ export function AdminUsersPage() {
},
})
const openUserEditModal = (title: string, user?: UserModel) => {
const openUserEditModal = (title: ReactNode, user?: UserModel) => {
openModal({
title,
children: (
@@ -45,7 +46,7 @@ export function AdminUsersPage() {
const openUserDeleteModal = (user: UserModel) => {
const userName = user.name
openConfirmModal({
title: t`Delete user`,
title: <Trans>Delete user</Trans>,
children: (
<Text size="sm">
<Trans>
@@ -53,7 +54,7 @@ export function AdminUsersPage() {
</Trans>
</Text>
),
labels: { confirm: t`Confirm`, cancel: t`Cancel` },
labels: { confirm: <Trans>Confirm</Trans>, cancel: <Trans>Cancel</Trans> },
confirmProps: { color: "red" },
onConfirm: () => deleteUser.execute({ id: user.id }),
})
@@ -65,7 +66,7 @@ export function AdminUsersPage() {
<Title order={3} mb="md">
<Group>
<Trans>Manage users</Trans>
<ActionIcon color={theme.primaryColor} onClick={() => openUserEditModal(t`Add user`)}>
<ActionIcon color={theme.primaryColor} onClick={() => openUserEditModal(<Trans>Add user</Trans>)}>
<TbPlus size={20} />
</ActionIcon>
</Group>
@@ -126,7 +127,7 @@ export function AdminUsersPage() {
</td>
<td>
<Group>
<ActionIcon color={theme.primaryColor} onClick={() => openUserEditModal(t`Edit user`, u)}>
<ActionIcon color={theme.primaryColor} onClick={() => openUserEditModal(<Trans>Edit user</Trans>, u)}>
<TbPencil size={18} />
</ActionIcon>
<ActionIcon

View File

@@ -9,21 +9,17 @@ import { useAsync } from "react-async-hook"
import { TbChartAreaLine, TbClock } from "react-icons/tb"
const shownMeters: { [key: string]: string } = {
"com.commafeed.backend.feed.FeedQueues.refill": "Refresh queue refill rate",
"com.commafeed.backend.feed.FeedRefreshTaskGiver.feedRefreshed": "Feed refreshed",
"com.commafeed.backend.feed.FeedRefreshUpdater.feedUpdated": "Feed updated",
"com.commafeed.backend.feed.FeedRefreshUpdater.entryCacheHit": "Entry cache hit",
"com.commafeed.backend.feed.FeedRefreshUpdater.entryCacheMiss": "Entry cache miss",
"com.commafeed.backend.feed.FeedRefreshEngine.refill": "Feed queue refill rate",
"com.commafeed.backend.feed.FeedRefreshWorker.feedFetched": "Feed fetching rate",
"com.commafeed.backend.feed.FeedRefreshUpdater.feedUpdated": "Feed update rate",
"com.commafeed.backend.feed.FeedRefreshUpdater.entryCacheHit": "Entry cache hit rate",
"com.commafeed.backend.feed.FeedRefreshUpdater.entryCacheMiss": "Entry cache miss rate",
}
const shownGauges: { [key: string]: string } = {
"com.commafeed.backend.feed.FeedRefreshExecutor.feed-refresh-updater.active": "Feed Updater active",
"com.commafeed.backend.feed.FeedRefreshExecutor.feed-refresh-updater.pending": "Feed Updater queued",
"com.commafeed.backend.feed.FeedRefreshExecutor.feed-refresh-worker.active": "Feed Worker active",
"com.commafeed.backend.feed.FeedRefreshExecutor.feed-refresh-worker.pending": "Feed Worker queued",
"com.commafeed.backend.feed.FeedQueues.addQueue": "Task Giver Add Queue",
"com.commafeed.backend.feed.FeedQueues.takeQueue": "Task Giver Take Queue",
"com.commafeed.backend.feed.FeedQueues.giveBackQueue": "Task Giver Give Back Queue",
"com.commafeed.backend.feed.FeedRefreshEngine.queue.size": "Queue size",
"com.commafeed.backend.feed.FeedRefreshEngine.worker.active": "Feed Worker active",
"com.commafeed.backend.feed.FeedRefreshEngine.updater.active": "Feed Updater active",
}
export function MetricsPage() {

View File

@@ -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, 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"
@@ -15,7 +15,7 @@ const useStyles = createStyles(() => ({
},
}))
function Section(props: { title: string; icon: React.ReactNode; children: React.ReactNode }) {
function Section(props: { title: React.ReactNode; icon: React.ReactNode; children: React.ReactNode }) {
const { classes } = useStyles()
return (
<Box my="xl">
@@ -38,7 +38,7 @@ function NextUnreadBookmarklet() {
return (
<Box>
<CategorySelect value={categoryId} onChange={c => c && setCategoryId(c)} withAll description={t`Category`} />
<CategorySelect value={categoryId} onChange={c => c && setCategoryId(c)} withAll description={<Trans>Category</Trans>} />
<NativeSelect
data={[
{ value: "desc", label: t`Newest first` },
@@ -46,7 +46,7 @@ function NextUnreadBookmarklet() {
]}
value={order}
onChange={e => setOrder(e.target.value)}
description={t`Order`}
description={<Trans>Order</Trans>}
/>
<Trans>Drag link to bookmark bar</Trans>
<span> </span>
@@ -64,15 +64,15 @@ export function AboutPage() {
return (
<Container size="xl">
<SimpleGrid cols={2} breakpoints={[{ maxWidth: Constants.layout.mobileBreakpoint, cols: 1 }]}>
<Section title={t`About`} icon={<TbHelp size={24} />}>
<Section title={<Trans>About</Trans>} icon={<TbHelp size={24} />}>
<Box>
<Trans>
CommaFeed version {version} ({revision})
</Trans>
</Box>
<Box>
<Box mt="md">
<Trans>
CommaFeed is an open-source project. Sources are hosted on&nbsp;
<span>CommaFeed is an open-source project. Sources are hosted on </span>
<Anchor href="https://github.com/Athou/commafeed" target="_blank" rel="noreferrer">
GitHub
</Anchor>
@@ -82,64 +82,13 @@ export function AboutPage() {
<Box>
<Trans>If you encounter an issue, please report it on the issues page of the GitHub project.</Trans>
</Box>
<Box mt="md">
<Trans>
If you like this project, please consider a donation to support the developer and help cover the costs of
keeping this website online.
</Trans>
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_blank">
<input type="hidden" name="cmd" value="_donations" />
<input type="hidden" name="business" value="9CNQHMJG2ZJVY" />
<input type="hidden" name="lc" value="US" />
<input type="hidden" name="item_name" value="CommaFeed" />
<input type="hidden" name="bn" value="PP-DonationsBF:btn_donateCC_LG.gif:NonHosted" />
<input type="hidden" name="currency_code" value="USD" />
<Center mt="md">
<Box mr="md">
<input
type="image"
src="https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif"
name="submit"
alt="PayPal - The safer, easier way to pay online!"
/>
</Box>
<Box>
<select name="currency_code">
<option value="EUR">Euro</option>
<option value="USD">US Dollars</option>
</select>
</Box>
</Center>
</form>
</Box>
</Section>
<Section title={t`Goodies`} icon={<TbPuzzle size={24} />}>
<Section title={<Trans>Goodies</Trans>} icon={<TbPuzzle size={24} />}>
<List>
<List.Item>
<Trans>Browser extentions</Trans>
<List withPadding>
<List.Item>
<Anchor
href="https://addons.mozilla.org/en-US/firefox/addon/commafeed/"
target="_blank"
rel="noreferrer"
>
Firefox
</Anchor>
</List.Item>
<List.Item>
<Anchor href="https://github.com/Athou/commafeed-chrome" target="_blank" rel="noreferrer">
Chrome
</Anchor>
</List.Item>
<List.Item>
<Anchor href="https://github.com/Athou/commafeed-opera" target="_blank" rel="noreferrer">
Opera
</Anchor>
</List.Item>
</List>
<Anchor href="https://github.com/Athou/commafeed-browser-extension" target="_blank" rel="noreferrer">
<Trans>Browser extentions</Trans>
</Anchor>
</List.Item>
<List.Item>
<Trans>Subscribe URL</Trans>
@@ -157,10 +106,10 @@ export function AboutPage() {
</List.Item>
</List>
</Section>
<Section title={t`Keyboard shortcuts`} icon={<TbKeyboard size={24} />}>
<Section title={<Trans>Keyboard shortcuts</Trans>} icon={<TbKeyboard size={24} />}>
<KeyboardShortcutsHelp />
</Section>
<Section title={t`REST API`} icon={<TbRocket size={24} />}>
<Section title={<Trans>REST API</Trans>} icon={<TbRocket size={24} />}>
<Anchor onClick={() => dispatch(redirectToApiDocumentation())}>
<Trans>Go to the API documentation.</Trans>
</Anchor>

View File

@@ -10,13 +10,13 @@ export function AddPage() {
<Container size="sm" px={0}>
<Tabs defaultValue="subscribe">
<Tabs.List>
<Tabs.Tab value="subscribe" icon={<TbRss />}>
<Tabs.Tab value="subscribe" icon={<TbRss size={16} />}>
<Trans>Subscribe</Trans>
</Tabs.Tab>
<Tabs.Tab value="category" icon={<TbFolderPlus />}>
<Tabs.Tab value="category" icon={<TbFolderPlus size={16} />}>
<Trans>Add category</Trans>
</Tabs.Tab>
<Tabs.Tab value="opml" icon={<TbFileImport />}>
<Tabs.Tab value="opml" icon={<TbFileImport size={16} />}>
<Trans>OPML</Trans>
</Tabs.Tab>
</Tabs.List>

View File

@@ -1,4 +1,4 @@
import { t, Trans } from "@lingui/macro"
import { Trans } from "@lingui/macro"
import { Anchor, Box, Button, Code, Container, Divider, Group, Input, NumberInput, Stack, Text, TextInput, Title } from "@mantine/core"
import { useForm } from "@mantine/form"
import { openConfirmModal } from "@mantine/modals"
@@ -48,7 +48,7 @@ export function CategoryDetailsPage() {
const openDeleteCategoryModal = () => {
const categoryName = category?.name
return openConfirmModal({
title: t`Delete Category`,
title: <Trans>Delete Category</Trans>,
children: (
<Text size="sm">
<Trans>
@@ -56,7 +56,7 @@ export function CategoryDetailsPage() {
</Trans>
</Text>
),
labels: { confirm: t`Confirm`, cancel: t`Cancel` },
labels: { confirm: <Trans>Confirm</Trans>, cancel: <Trans>Cancel</Trans> },
confirmProps: { color: "red" },
onConfirm: () => deleteCategory.execute({ id: +id }),
})
@@ -91,7 +91,7 @@ export function CategoryDetailsPage() {
<form onSubmit={form.onSubmit(modifyCategory.execute)}>
<Stack>
<Title order={3}>{category.name}</Title>
<Input.Wrapper label={t`Generated feed url`}>
<Input.Wrapper label={<Trans>Generated feed url</Trans>}>
<Box>
{apiKey && (
<Anchor
@@ -108,9 +108,16 @@ export function CategoryDetailsPage() {
{editable && (
<>
<TextInput label={t`Name`} {...form.getInputProps("name")} required />
<CategorySelect label={t`Parent Category`} {...form.getInputProps("parentId")} clearable />
<NumberInput label={t`Position`} {...form.getInputProps("position")} required min={0} />
<Divider />
<TextInput label={<Trans>Name</Trans>} {...form.getInputProps("name")} required />
<CategorySelect
label={<Trans>Parent Category</Trans>}
{...form.getInputProps("parentId")}
clearable
withoutCategoryIds={[id]}
/>
<NumberInput label={<Trans>Position</Trans>} {...form.getInputProps("position")} required min={0} />
</>
)}

View File

@@ -0,0 +1,59 @@
import { Trans } from "@lingui/macro"
import { Anchor, Box, Code, Container, Group, List, Title } from "@mantine/core"
import { Constants } from "app/constants"
import React from "react"
import { TbBrandGithub, TbBrandPaypal, TbCoinBitcoin, TbHeartFilled } from "react-icons/tb"
const iconSize = 24
export function DonatePage() {
return (
<Container size="xl" my="xl">
<Group>
<TbHeartFilled size={iconSize} color="red" />
<Title order={3}>
<Trans>Donate</Trans>
</Title>
</Group>
<Box my="xl">
<Trans>
<Box>Hey,</Box>
<Box mt="xs">
I'm Jérémie from Belgium and I've been working on CommaFeed in my free time for over 10 years now. Thanks for taking
an interest in helping me continue supporting CommaFeed.
</Box>
</Trans>
<List mt="lg">
<List.Item icon={<TbBrandPaypal size={iconSize} />}>
<Anchor
href="https://www.paypal.com/donate/?business=9CNQHMJG2ZJVY&no_recurring=0&item_name=CommaFeed&currency_code=EUR"
target="_blank"
rel="noreferrer"
>
Paypal EUR
</Anchor>
</List.Item>
<List.Item icon={<TbBrandPaypal size={iconSize} />}>
<Anchor
href="https://www.paypal.com/donate/?business=9CNQHMJG2ZJVY&no_recurring=0&item_name=CommaFeed&currency_code=USD"
target="_blank"
rel="noreferrer"
>
Paypal USD
</Anchor>
</List.Item>
<List.Item icon={<TbBrandGithub size={iconSize} />}>
<Anchor href="https://github.com/sponsors/Athou" target="_blank" rel="noreferrer">
GitHub Sponsors
</Anchor>
</List.Item>
<List.Item icon={<TbCoinBitcoin size={iconSize} />}>
Bitcoin: <Code>{Constants.bitcoinWalletAddress}</Code>
</List.Item>
</List>
</Box>
</Container>
)
}

View File

@@ -1,4 +1,4 @@
import { t, Trans } from "@lingui/macro"
import { Trans } from "@lingui/macro"
import { Anchor, Box, Button, Code, Container, Divider, Group, Input, NumberInput, Stack, Text, TextInput, Title } from "@mantine/core"
import { useForm } from "@mantine/form"
import { openConfirmModal } from "@mantine/modals"
@@ -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>
@@ -47,6 +47,7 @@ function FilteringExpressionDescription() {
</div>
)
}
export function FeedDetailsPage() {
const { id } = useParams()
if (!id) throw Error("id required")
@@ -75,7 +76,7 @@ export function FeedDetailsPage() {
const openUnsubscribeModal = () => {
const feedName = feed?.name
return openConfirmModal({
title: t`Unsubscribe`,
title: <Trans>Unsubscribe</Trans>,
children: (
<Text size="sm">
<Trans>
@@ -83,7 +84,7 @@ export function FeedDetailsPage() {
</Trans>
</Text>
),
labels: { confirm: t`Confirm`, cancel: t`Cancel` },
labels: { confirm: <Trans>Confirm</Trans>, cancel: <Trans>Cancel</Trans> },
confirmProps: { color: "red" },
onConfirm: () => unsubscribe.execute({ id: +id }),
})
@@ -112,34 +113,34 @@ export function FeedDetailsPage() {
<form onSubmit={form.onSubmit(modifyFeed.execute)}>
<Stack>
<Title order={3}>{feed.name}</Title>
<Input.Wrapper label={t`Feed URL`}>
<Input.Wrapper label={<Trans>Feed URL</Trans>}>
<Box>
<Anchor href={feed.feedUrl} target="_blank" rel="noreferrer">
{feed.feedUrl}
</Anchor>
</Box>
</Input.Wrapper>
<Input.Wrapper label={t`Website`}>
<Input.Wrapper label={<Trans>Website</Trans>}>
<Box>
<Anchor href={feed.feedLink} target="_blank" rel="noreferrer">
{feed.feedLink}
</Anchor>
</Box>
</Input.Wrapper>
<Input.Wrapper label={t`Last refresh`}>
<Input.Wrapper label={<Trans>Last refresh</Trans>}>
<Box>
<RelativeDate date={feed.lastRefresh} />
</Box>
</Input.Wrapper>
<Input.Wrapper label={t`Last refresh message`}>
<Box>{feed.message ?? t`N/A`}</Box>
<Input.Wrapper label={<Trans>Last refresh message</Trans>}>
<Box>{feed.message ?? <Trans>N/A</Trans>}</Box>
</Input.Wrapper>
<Input.Wrapper label={t`Next refresh`}>
<Input.Wrapper label={<Trans>Next refresh</Trans>}>
<Box>
<RelativeDate date={feed.nextRefresh} />
</Box>
</Input.Wrapper>
<Input.Wrapper label={t`Generated feed url`}>
<Input.Wrapper label={<Trans>Generated feed url</Trans>}>
<Box>
{apiKey && (
<Anchor href={`rest/feed/entriesAsFeed?id=${feed.id}&apiKey=${apiKey}`} target="_blank" rel="noreferrer">
@@ -150,11 +151,13 @@ export function FeedDetailsPage() {
</Box>
</Input.Wrapper>
<TextInput label={t`Name`} {...form.getInputProps("name")} required />
<CategorySelect label={t`Category`} {...form.getInputProps("categoryId")} clearable />
<NumberInput label={t`Position`} {...form.getInputProps("position")} required min={0} />
<Divider />
<TextInput label={<Trans>Name</Trans>} {...form.getInputProps("name")} required />
<CategorySelect label={<Trans>Category</Trans>} {...form.getInputProps("categoryId")} clearable />
<NumberInput label={<Trans>Position</Trans>} {...form.getInputProps("position")} required min={0} />
<TextInput
label={t`Filtering expression`}
label={<Trans>Filtering expression</Trans>}
description={<FilteringExpressionDescription />}
{...form.getInputProps("filter")}
/>

Some files were not shown because too many files have changed in this diff Show More