Compare commits

...

129 Commits
3.2.0 ... 3.8.0

Author SHA1 Message Date
Athou
82cf0e154a release 3.8.0 2023-06-28 20:40:22 +02:00
Athou
efe32e86c9 remove warning about vite not finding custom code at build time 2023-06-27 19:25:44 +02:00
Athou
e208d4ae1e escape input before using it as a regex 2023-06-27 19:11:17 +02:00
Athou
adf20327bd fix broken welcome page mobile layout 2023-06-27 19:05:38 +02:00
Jérémie Panzer
781c41b452 Merge pull request #1107 from canoine/master
Update fr/messages.po
2023-06-27 12:21:17 +02:00
canoine
2b597f9b43 Update fr/messages.po
Translating new entries
2023-06-27 12:19:21 +02:00
Athou
2e26f34135 reduce button spacing on desktop to be able to reduce breakpoint (#1106) 2023-06-27 11:18:56 +02:00
Athou
9e59a472da fix typo 2023-06-27 08:21:30 +02:00
Athou
970043467c make sure there's enough room to show all buttons 2023-06-27 08:21:05 +02:00
Athou
3e903fc6bc use a single call to useContextMenu as recommended in the docs 2023-06-26 20:06:46 +02:00
Athou
95f4cffa7c avoid using sx in feed entry list to improve performance 2023-06-25 21:12:27 +02:00
Athou
6ebe0fa827 memoize feed entry content because Interweave is costly 2023-06-25 20:58:36 +02:00
Athou
488a88fe95 we removed the usage of the deprecated hibernate id generator, we no longer need to ignore warning log messages about it 2023-06-25 07:32:14 +02:00
Athou
d5898a0173 throttle scroll listener 2023-06-24 23:04:52 +02:00
Athou
bdcfbc22bf remove ScrollArea as it causes performance issues on chrome (#1087) 2023-06-24 23:00:25 +02:00
Athou
53b06f41f3 add divider to avoid misclicks 2023-06-24 18:30:26 +02:00
Athou
872247d80f add previous and next buttons (#1096) 2023-06-24 13:30:58 +02:00
Athou
7c226f41db add a setting to always scroll selected entry to the top of the page, even if it fits entirely on screen (#1088) 2023-06-24 09:48:59 +02:00
Athou
bb55a91a14 format absolute dates in popups in user locale instead of GMT 2023-06-22 22:33:53 +02:00
Athou
f140650b4e monaco mobile support is poor, fallback to textarea 2023-06-22 22:19:40 +02:00
Athou
8a64a9db31 host monaco ourselves, don't download it from a CDN 2023-06-22 20:40:28 +02:00
Athou
c1520652f2 move RichCodeEditor to its own component 2023-06-22 18:41:12 +02:00
Athou
90e3044249 wait for tab to be activated to load rich code editor 2023-06-22 16:30:00 +02:00
Athou
f7786d9962 add rich editor for custom code 2023-06-22 14:37:56 +02:00
Athou
aeaaeaee0e fix warning 2023-06-22 10:36:03 +02:00
Athou
4d0a8fd133 fix user count 2023-06-22 07:19:33 +02:00
Athou
b1938c234c use useMobile 2023-06-21 21:58:11 +02:00
Athou
6a5052787d clicking on the body of an entry in expanded mode selects it and marks it as read (#1089) 2023-06-21 20:30:08 +02:00
Athou
877fc33180 move swipe callback next to other callbacks 2023-06-21 20:30:08 +02:00
Jérémie Panzer
8b0b9b1a66 Merge pull request #1092 from canoine/patch-1
Update fr/messages.po
2023-06-21 17:02:10 +02:00
canoine
689c329430 Update fr/messages.po
Traduction des nouveaux messages
2023-06-21 15:45:11 +02:00
Athou
52f911f303 add websocket metrics 2023-06-21 14:20:14 +02:00
Athou
91d0988177 add useMobile 2023-06-21 09:13:20 +02:00
Athou
4f644ba9f5 remove workaround to make popovers follow their target on scroll, it causes lagging issues and was fixed in https://github.com/mantinedev/mantine/issues/3351 (#1087) 2023-06-20 10:46:42 +02:00
Athou
4f699d9675 release 3.7.0 2023-06-20 09:18:18 +02:00
Athou
a5aba6f7ae content is no longer limited to 650px when sidebar is hidden (same as commafeed v2) (#1084) 2023-06-18 12:46:42 +02:00
Athou
78c8711a79 add tooltips to all relative dates with exact time 2023-06-17 22:53:07 +02:00
Athou
8325236d0e hide horizontal scrollbar (#1084) 2023-06-17 22:43:23 +02:00
Athou
437401e73f fix sidebar scrolling (#1084) 2023-06-17 08:37:41 +02:00
Athou
fa06d321d5 restore F shortcut to hide sidebar (#1084) 2023-06-16 21:49:08 +02:00
Athou
d1ddcb6ace resizeable tree (#1084) 2023-06-16 21:24:34 +02:00
Athou
6944d4dc0b fix unreadable api documentation page with dark theme (#1082) 2023-06-16 20:07:36 +02:00
Athou
c835d805b1 restore a version of findNextUpdatable that handles inactive users better than the one we removed a while ago 2023-06-16 15:27:39 +02:00
Athou
4a90e1f69d add some debugging 2023-06-16 13:14:37 +02:00
Athou
fcfeaa462e on user login and in heavy load mode, only force refresh feeds that are up for refresh 2023-06-16 13:14:37 +02:00
Athou
b16978d8fe position is now always set (#1076) 2023-06-15 21:12:10 +02:00
Athou
68c62b4528 no need to push the extension this much 2023-06-14 01:09:31 +02:00
Athou
18f68aab31 fallback to ctrl+click simulation if extension is not installed (#1074 #1075) 2023-06-14 01:03:59 +02:00
Athou
8abb2770ec fix release script, it's the CHANGELOG that needs to be updated 2023-06-13 11:15:29 +02:00
Athou
9156b8b6d0 add a setting to hide commafeed from search engines 2023-06-13 10:51:12 +02:00
Athou
2c32fa1e13 make "b" keyboard shortcut work in extension popup 2023-06-13 10:29:18 +02:00
Athou
7e48afe36c correctly detect the extension if the hook is not used on the initial page 2023-06-12 21:47:54 +02:00
Athou
cd94a3b56f update browser extension badge unread count 2023-06-12 20:54:40 +02:00
Athou
22e0f1f382 use browser extension to open tab in background (#1074) 2023-06-11 17:59:46 +02:00
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
176 changed files with 8359 additions and 5867 deletions

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

@@ -54,7 +54,7 @@ jobs:
with: with:
context: . context: .
push: true push: true
platforms: linux/amd64,linux/arm/v7 platforms: linux/amd64,linux/arm/v7,linux/arm64/v8
tags: | tags: |
athou/commafeed:latest athou/commafeed:latest
athou/commafeed:${{ github.ref_name }} athou/commafeed:${{ github.ref_name }}
@@ -65,7 +65,7 @@ jobs:
with: with:
context: . context: .
push: true push: true
platforms: linux/amd64,linux/arm/v7 platforms: linux/amd64,linux/arm/v7,linux/arm64/v8
tags: athou/commafeed:master tags: athou/commafeed:master
# Create GitHub release after Docker image has been published # Create GitHub release after Docker image has been published
@@ -86,4 +86,4 @@ jobs:
prerelease: false prerelease: false
files: | files: |
commafeed-server/target/commafeed.jar commafeed-server/target/commafeed.jar
commafeed-server/config.yml.example commafeed-server/config.yml.example

View File

@@ -1,5 +1,74 @@
# Changelog # Changelog
## [3.8.0]
- add previous and next buttons in the toolbar
- add a setting to always scroll selected entry to the top of the page, even if it fits entirely on screen
- clicking on the body of an entry in expanded mode selects it and marks it as read
- add rich text editor with autocomplete for custom css and js code in settings (desktop only)
- dramatically improve performance while scrolling
- fix broken welcome page mobile layout
- format dates in user locale instead of GMT in relative date popups
## [3.7.0]
- the sidebar is now resizable
- added the "f" keyboard shortcut to hide the sidebar
- added tooltips to relative dates with the exact date
- add a setting to hide commafeed from search engines (exposes a robots.txt file, enabled by default)
- the browser extension unread count now updates when articles are marked as read/unread in the app
- The "b" keyboard shortcut now works as expected on Chrome but requires the browser extension to be installed
- dark mode has been disabled on the api documentation page as it was unreadable
- improvement to the feed refresh queuing logic when "heavy load" mode is enabled
- fix a bug that could prevent feeds and categories from being edited
## [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] ## [3.2.0]
- restore the welcome page - restore the welcome page
@@ -131,4 +200,4 @@
consumption and better overall performances. consumption and better overall performances.
See the README on how to build CommaFeed from now on. See the README on how to build CommaFeed from now on.
- CommaFeed should no longer fetch the same feed multiple times in a row - CommaFeed should no longer fetch the same feed multiple times in a row
- Users can use their username or email to log in - Users can use their username or email to log in

View File

@@ -5,6 +5,7 @@ EXPOSE 8082
RUN mkdir -p /commafeed/data RUN mkdir -p /commafeed/data
VOLUME /commafeed/data VOLUME /commafeed/data
ENV CF_SESSION_PATH=/commafeed/data/sessions 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/config.yml.example config.yml
COPY commafeed-server/target/commafeed.jar . COPY commafeed-server/target/commafeed.jar .

View File

@@ -15,15 +15,7 @@ Google Reader inspired self-hosted RSS reader, based on Dropwizard and React/Typ
- Supports thousands of users and millions of feeds - Supports thousands of users and millions of feeds
- OPML import/export - OPML import/export
- REST API - REST API
- [Browser extension](https://github.com/Athou/commafeed-browser-extension)
## Related open-source projects
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)
## Deployment on your own server ## Deployment on your own server
@@ -59,11 +51,11 @@ located [here](https://github.com/Athou/commafeed/tree/master/commafeed-client/s
To add a new language: To add a new language:
- edit `commafeed-client/src/i18n.ts` - add the new locale to the `locales` array in:
- add the new locale to the `locales` array. - `commafeed-client/.linguirc`
- import the dayjs locale - `commafeed-client/src/i18n.ts`
- edit `commafeed-client/.linguirc` and add the new locale to the `locales` array. - run `npm run i18n:extract`
- run `npm run i18n` and add translations to the newly created `commafeed-client/src/locales/[locale]/messages.po` file - add translations to the newly created `commafeed-client/src/locales/[locale]/messages.po` file
The name of the locale should be the 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). two-letters [ISO-639-1 language code](http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes).

View File

@@ -3,4 +3,6 @@ node_modules
vite.config.ts 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 src/locales/**/*.ts

View File

@@ -29,5 +29,6 @@ dist-ssr
# vite # vite
vite.config.ts.timestamp-*.mjs 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 src/locales/**/*.ts

View File

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

View File

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

File diff suppressed because it is too large Load Diff

View File

@@ -6,78 +6,80 @@
"scripts": { "scripts": {
"dev": "vite --host", "dev": "vite --host",
"dev:typescript": "tsc --watch", "dev:typescript": "tsc --watch",
"build": "npm run i18n:compile && tsc && vite build", "build": "tsc && vite build",
"preview": "vite preview", "preview": "vite preview",
"test": "vitest", "test": "vitest",
"test:ci": "vitest run", "test:ci": "vitest run",
"eslint": "eslint --ext=.js,.jsx,.ts,.tsx src", "eslint": "eslint --ext=.js,.jsx,.ts,.tsx src",
"i18n": "npm run i18n:extract && npm run i18n:compile", "i18n:extract": "lingui extract --clean"
"i18n:extract": "lingui extract --clean",
"i18n:compile": "lingui compile --typescript",
"postinstall": "npm run i18n:compile"
}, },
"dependencies": { "dependencies": {
"@emotion/react": "^11.10.5", "@emotion/react": "^11.11.0",
"@fontsource/open-sans": "^4.5.14", "@fontsource/open-sans": "^5.0.1",
"@lingui/core": "^3.17.0", "@lingui/core": "^4.1.2",
"@lingui/macro": "^3.17.0", "@lingui/macro": "^4.1.2",
"@lingui/react": "^3.17.0", "@lingui/react": "^4.1.2",
"@mantine/core": "^5.10.3", "@mantine/core": "^6.0.11",
"@mantine/form": "^5.10.3", "@mantine/form": "^6.0.11",
"@mantine/hooks": "^5.10.3", "@mantine/hooks": "^6.0.11",
"@mantine/modals": "^5.10.3", "@mantine/modals": "^6.0.11",
"@mantine/notifications": "^5.10.3", "@mantine/notifications": "^6.0.11",
"@mantine/spotlight": "^5.10.3", "@mantine/spotlight": "^6.0.11",
"@mantine/styles": "^5.10.3", "@mantine/styles": "^6.0.11",
"@reduxjs/toolkit": "^1.9.2", "@monaco-editor/react": "^4.5.1",
"axios": "^1.3.2", "@reduxjs/toolkit": "^1.9.5",
"axios": "^1.4.0",
"dayjs": "^1.11.7", "dayjs": "^1.11.7",
"interweave": "^13.0.0", "escape-string-regexp": "^5.0.0",
"lodash": "^4.17.21", "interweave": "^13.1.0",
"make-plural": "^7.2.0", "monaco-editor": "^0.38.0",
"mousetrap": "^1.6.5", "mousetrap": "^1.6.5",
"re-resizable": "^6.9.9",
"react": "^18.2.0", "react": "^18.2.0",
"react-async-hook": "^4.0.0", "react-async-hook": "^4.0.0",
"react-contexify": "^6.0.0", "react-contexify": "^6.0.0",
"react-dom": "^18.2.0", "react-dom": "^18.2.0",
"react-ga4": "^2.1.0", "react-ga4": "^2.1.0",
"react-icons": "^4.7.1", "react-icons": "^4.8.0",
"react-infinite-scroller": "^1.2.6", "react-infinite-scroller": "^1.2.6",
"react-redux": "^8.0.5", "react-redux": "^8.0.5",
"react-router-dom": "^6.8.0", "react-router-dom": "^6.11.2",
"react-swipeable": "^7.0.0", "react-swipeable": "^7.0.0",
"swagger-ui-react": "^4.15.5", "swagger-ui-react": "^4.18.3",
"throttle-debounce": "^5.0.0",
"tinycon": "^0.6.8", "tinycon": "^0.6.8",
"use-local-storage": "^3.0.0", "use-local-storage": "^3.0.0",
"websocket-heartbeat-js": "^1.1.1" "websocket-heartbeat-js": "^1.1.2"
}, },
"devDependencies": { "devDependencies": {
"@lingui/cli": "^3.17.0", "@lingui/cli": "^4.1.2",
"@types/eslint": "^8.21.0", "@lingui/vite-plugin": "^4.1.2",
"@types/lodash": "^4.14.191", "@types/eslint": "^8.40.0",
"@types/mousetrap": "^1.6.11", "@types/mousetrap": "^1.6.11",
"@types/react": "^18.0.27", "@types/react": "^18.2.6",
"@types/react-dom": "^18.0.10", "@types/react-dom": "^18.2.4",
"@types/react-infinite-scroller": "^1.2.3", "@types/react-infinite-scroller": "^1.2.3",
"@types/swagger-ui-react": "^4.11.0", "@types/swagger-ui-react": "^4.18.0",
"@types/throttle-debounce": "^5.0.0",
"@types/tinycon": "^0.6.3", "@types/tinycon": "^0.6.3",
"@typescript-eslint/eslint-plugin": "^5.50.0", "@typescript-eslint/eslint-plugin": "^5.59.7",
"@typescript-eslint/parser": "^5.50.0", "@typescript-eslint/parser": "^5.59.7",
"@vitejs/plugin-react": "^3.1.0", "@vitejs/plugin-react": "^4.0.0",
"eslint": "^8.33.0", "babel-plugin-macros": "^3.1.0",
"eslint": "^8.41.0",
"eslint-config-airbnb": "^19.0.4", "eslint-config-airbnb": "^19.0.4",
"eslint-config-airbnb-typescript": "^17.0.0", "eslint-config-airbnb-typescript": "^17.0.0",
"eslint-config-prettier": "^8.6.0", "eslint-config-prettier": "^8.8.0",
"eslint-config-react-app": "^7.0.1", "eslint-config-react-app": "^7.0.1",
"eslint-plugin-hooks": "^0.4.3", "eslint-plugin-hooks": "^0.4.3",
"eslint-plugin-prettier": "^4.2.1", "eslint-plugin-prettier": "^4.2.1",
"prettier": "^2.8.3", "prettier": "^2.8.8",
"rollup-plugin-visualizer": "^5.9.0", "rollup-plugin-visualizer": "^5.9.0",
"typescript": "^4.9.5", "typescript": "^5.0.4",
"vite": "^4.1.1", "vite": "^4.3.9",
"vite-plugin-eslint": "^1.8.1", "vite-plugin-eslint": "^1.8.1",
"vite-tsconfig-paths": "^4.0.5", "vite-tsconfig-paths": "^4.2.0",
"vitest": "^0.28.4", "vitest": "^0.31.1",
"vitest-mock-extended": "^1.0.9" "vitest-mock-extended": "^1.1.3"
} }
} }

View File

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

View File

@@ -3,7 +3,7 @@ import { I18nProvider } from "@lingui/react"
import { ColorScheme, ColorSchemeProvider, MantineProvider } from "@mantine/core" import { ColorScheme, ColorSchemeProvider, MantineProvider } from "@mantine/core"
import { useColorScheme } from "@mantine/hooks" import { useColorScheme } from "@mantine/hooks"
import { ModalsProvider } from "@mantine/modals" import { ModalsProvider } from "@mantine/modals"
import { NotificationsProvider } from "@mantine/notifications" import { Notifications } from "@mantine/notifications"
import { Constants } from "app/constants" import { Constants } from "app/constants"
import { redirectTo } from "app/slices/redirect" import { redirectTo } from "app/slices/redirect"
import { reloadServerInfos } from "app/slices/server" import { reloadServerInfos } from "app/slices/server"
@@ -12,12 +12,14 @@ import { categoryUnreadCount } from "app/utils"
import { ErrorBoundary } from "components/ErrorBoundary" import { ErrorBoundary } from "components/ErrorBoundary"
import { Header } from "components/header/Header" import { Header } from "components/header/Header"
import { Tree } from "components/sidebar/Tree" import { Tree } from "components/sidebar/Tree"
import { useBrowserExtension } from "hooks/useBrowserExtension"
import { useI18n } from "i18n" import { useI18n } from "i18n"
import { AdminUsersPage } from "pages/admin/AdminUsersPage" import { AdminUsersPage } from "pages/admin/AdminUsersPage"
import { MetricsPage } from "pages/admin/MetricsPage" import { MetricsPage } from "pages/admin/MetricsPage"
import { AboutPage } from "pages/app/AboutPage" import { AboutPage } from "pages/app/AboutPage"
import { AddPage } from "pages/app/AddPage" import { AddPage } from "pages/app/AddPage"
import { CategoryDetailsPage } from "pages/app/CategoryDetailsPage" import { CategoryDetailsPage } from "pages/app/CategoryDetailsPage"
import { DonatePage } from "pages/app/DonatePage"
import { FeedDetailsPage } from "pages/app/FeedDetailsPage" import { FeedDetailsPage } from "pages/app/FeedDetailsPage"
import { FeedEntriesPage } from "pages/app/FeedEntriesPage" import { FeedEntriesPage } from "pages/app/FeedEntriesPage"
import Layout from "pages/app/Layout" import Layout from "pages/app/Layout"
@@ -26,17 +28,17 @@ import { TagDetailsPage } from "pages/app/TagDetailsPage"
import { LoginPage } from "pages/auth/LoginPage" import { LoginPage } from "pages/auth/LoginPage"
import { PasswordRecoveryPage } from "pages/auth/PasswordRecoveryPage" import { PasswordRecoveryPage } from "pages/auth/PasswordRecoveryPage"
import { RegistrationPage } from "pages/auth/RegistrationPage" import { RegistrationPage } from "pages/auth/RegistrationPage"
import { WelcomePage } from "pages/WelcomePage"
import React, { useEffect } from "react" import React, { useEffect } from "react"
import ReactGA from "react-ga4" import ReactGA from "react-ga4"
import { HashRouter, Navigate, Route, Routes, useLocation, useNavigate } from "react-router-dom" import { HashRouter, Navigate, Route, Routes, useLocation, useNavigate } from "react-router-dom"
import Tinycon from "tinycon" import Tinycon from "tinycon"
import useLocalStorage from "use-local-storage" import useLocalStorage from "use-local-storage"
import { WelcomePage } from "./pages/WelcomePage"
function Providers(props: { children: React.ReactNode }) { function Providers(props: { children: React.ReactNode }) {
const preferredColorScheme = useColorScheme() const preferredColorScheme = useColorScheme()
const [colorScheme, setColorScheme] = useLocalStorage<ColorScheme>("color-scheme", preferredColorScheme) const [colorScheme, setColorScheme] = useLocalStorage<ColorScheme>("color-scheme", preferredColorScheme)
const toggleColorScheme = (value?: ColorScheme) => setColorScheme(value || (colorScheme === "dark" ? "light" : "dark")) const toggleColorScheme = (value?: ColorScheme) => setColorScheme(value ?? (colorScheme === "dark" ? "light" : "dark"))
return ( return (
<I18nProvider i18n={i18n}> <I18nProvider i18n={i18n}>
@@ -51,9 +53,8 @@ function Providers(props: { children: React.ReactNode }) {
}} }}
> >
<ModalsProvider> <ModalsProvider>
<NotificationsProvider position="bottom-right" zIndex={9999}> <Notifications position="bottom-right" zIndex={9999} />
<ErrorBoundary>{props.children}</ErrorBoundary> <ErrorBoundary>{props.children}</ErrorBoundary>
</NotificationsProvider>
</ModalsProvider> </ModalsProvider>
</MantineProvider> </MantineProvider>
</ColorSchemeProvider> </ColorSchemeProvider>
@@ -65,6 +66,9 @@ function Providers(props: { children: React.ReactNode }) {
const ApiDocumentationPage = React.lazy(() => import("pages/app/ApiDocumentationPage")) const ApiDocumentationPage = React.lazy(() => import("pages/app/ApiDocumentationPage"))
function AppRoutes() { function AppRoutes() {
const sidebarWidth = useAppSelector(state => state.tree.sidebarWidth)
const sidebarVisible = useAppSelector(state => state.tree.sidebarVisible)
return ( return (
<Routes> <Routes>
<Route path="/" element={<Navigate to={`/app/category/${Constants.categories.all.id}`} replace />} /> <Route path="/" element={<Navigate to={`/app/category/${Constants.categories.all.id}`} replace />} />
@@ -72,7 +76,8 @@ function AppRoutes() {
<Route path="login" element={<LoginPage />} /> <Route path="login" element={<LoginPage />} />
<Route path="register" element={<RegistrationPage />} /> <Route path="register" element={<RegistrationPage />} />
<Route path="passwordRecovery" element={<PasswordRecoveryPage />} /> <Route path="passwordRecovery" element={<PasswordRecoveryPage />} />
<Route path="app" element={<Layout header={<Header />} sidebar={<Tree />} />}> <Route path="api" element={<ApiDocumentationPage />} />
<Route path="app" element={<Layout header={<Header />} sidebar={<Tree />} sidebarWidth={sidebarVisible ? sidebarWidth : 0} />}>
<Route path="category"> <Route path="category">
<Route path=":id" element={<FeedEntriesPage sourceType="category" />} /> <Route path=":id" element={<FeedEntriesPage sourceType="category" />} />
<Route path=":id/details" element={<CategoryDetailsPage />} /> <Route path=":id/details" element={<CategoryDetailsPage />} />
@@ -92,7 +97,7 @@ function AppRoutes() {
<Route path="metrics" element={<MetricsPage />} /> <Route path="metrics" element={<MetricsPage />} />
</Route> </Route>
<Route path="about" element={<AboutPage />} /> <Route path="about" element={<AboutPage />} />
<Route path="api" element={<ApiDocumentationPage />} /> <Route path="donate" element={<DonatePage />} />
</Route> </Route>
<Route path="*" element={<Navigate to="/" replace />} /> <Route path="*" element={<Navigate to="/" replace />} />
</Routes> </Routes>
@@ -123,7 +128,7 @@ function GoogleAnalyticsHandler() {
}, [googleAnalyticsCode]) }, [googleAnalyticsCode])
useEffect(() => { useEffect(() => {
ReactGA.send({ hitType: "pageview", page: location.pathname }) if (ReactGA.isInitialized) ReactGA.send({ hitType: "pageview", page: location.pathname })
}, [location]) }, [location])
return null return null
@@ -133,13 +138,28 @@ function FaviconHandler() {
const root = useAppSelector(state => state.tree.rootCategory) const root = useAppSelector(state => state.tree.rootCategory)
useEffect(() => { useEffect(() => {
const unreadCount = categoryUnreadCount(root) const unreadCount = categoryUnreadCount(root)
if (unreadCount === 0) Tinycon.reset() if (unreadCount === 0) {
else Tinycon.setBubble(unreadCount) Tinycon.reset()
} else {
Tinycon.setBubble(unreadCount)
}
}, [root]) }, [root])
return null return null
} }
function BrowserExtensionBadgeUnreadCountHandler() {
const root = useAppSelector(state => state.tree.rootCategory)
const { setBadgeUnreadCount } = useBrowserExtension()
useEffect(() => {
if (!root) return
const unreadCount = categoryUnreadCount(root)
setBadgeUnreadCount(unreadCount)
}, [root, setBadgeUnreadCount])
return null
}
export function App() { export function App() {
useI18n() useI18n()
const dispatch = useAppDispatch() const dispatch = useAppDispatch()
@@ -152,6 +172,7 @@ export function App() {
<Providers> <Providers>
<> <>
<FaviconHandler /> <FaviconHandler />
<BrowserExtensionBadgeUnreadCountHandler />
<HashRouter> <HashRouter>
<GoogleAnalyticsHandler /> <GoogleAnalyticsHandler />
<RedirectHandler /> <RedirectHandler />

View File

@@ -30,7 +30,10 @@ const axiosInstance = axios.create({ baseURL: "./rest", withCredentials: true })
axiosInstance.interceptors.response.use( axiosInstance.interceptors.response.use(
response => response, response => response,
error => { error => {
if (error.response.status === 401 && error.response.data === "Credentials are required to access this resource.") { 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" window.location.hash = "/welcome"
} }
throw error throw error

View File

@@ -88,14 +88,14 @@ export const Constants = {
layout: { layout: {
mobileBreakpoint: DEFAULT_THEME.breakpoints.md, mobileBreakpoint: DEFAULT_THEME.breakpoints.md,
headerHeight: 60, headerHeight: 60,
sidebarWidth: 350,
entryMaxWidth: 650, entryMaxWidth: 650,
isTopVisible: (div: HTMLElement) => div.getBoundingClientRect().top >= Constants.layout.headerHeight, isTopVisible: (div: HTMLElement) => div.getBoundingClientRect().top >= Constants.layout.headerHeight,
isBottomVisible: (div: HTMLElement) => div.getBoundingClientRect().bottom <= window.innerHeight, isBottomVisible: (div: HTMLElement) => div.getBoundingClientRect().bottom <= window.innerHeight,
}, },
dom: { dom: {
mainScrollAreaId: "main-scroll-area-id",
entryId: (entry: Entry) => `entry-id-${entry.id}`, entryId: (entry: Entry) => `entry-id-${entry.id}`,
entryContextMenuId: (entry: Entry) => entry.id,
}, },
browserExtensionUrl: "https://github.com/Athou/commafeed-browser-extension",
bitcoinWalletAddress: "1dymfUxqCWpyD7a6rQSqNy4rLVDBsAr5e", bitcoinWalletAddress: "1dymfUxqCWpyD7a6rQSqNy4rLVDBsAr5e",
} }

View File

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

View File

@@ -45,18 +45,27 @@ const initialState: EntriesState = {
const getEndpoint = (sourceType: EntrySourceType) => const getEndpoint = (sourceType: EntrySourceType) =>
sourceType === "category" || sourceType === "tag" ? client.category.getEntries : client.feed.getEntries sourceType === "category" || sourceType === "tag" ? client.category.getEntries : client.feed.getEntries
export const loadEntries = createAsyncThunk<Entries, { source: EntrySource; clearSearch: boolean }, { state: RootState }>( export const loadEntries = createAsyncThunk<
"entries/load", Entries,
async (arg, thunkApi) => { { source: EntrySource; clearSearch: boolean },
if (arg.clearSearch) thunkApi.dispatch(setSearch("")) {
state: RootState
const state = thunkApi.getState()
const endpoint = getEndpoint(arg.source.type)
const result = await endpoint(buildGetEntriesPaginatedRequest(state, arg.source, 0))
return result.data
} }
) >("entries/load", async (arg, thunkApi) => {
export const loadMoreEntries = createAsyncThunk<Entries, void, { state: RootState }>("entries/loadMore", async (_, thunkApi) => { if (arg.clearSearch) thunkApi.dispatch(setSearch(""))
const state = thunkApi.getState()
const endpoint = getEndpoint(arg.source.type)
const result = await endpoint(buildGetEntriesPaginatedRequest(state, arg.source, 0))
return result.data
})
export const loadMoreEntries = createAsyncThunk<
Entries,
void,
{
state: RootState
}
>("entries/loadMore", async (_, thunkApi) => {
const state = thunkApi.getState() const state = thunkApi.getState()
const { source } = state.entries const { source } = state.entries
const offset = const offset =
@@ -74,7 +83,13 @@ const buildGetEntriesPaginatedRequest = (state: RootState, source: EntrySource,
tag: source.type === "tag" ? source.id : undefined, tag: source.type === "tag" ? source.id : undefined,
keywords: state.entries.search, keywords: state.entries.search,
}) })
export const reloadEntries = createAsyncThunk<void, void, { state: RootState }>("entries/reload", async (arg, thunkApi) => { export const reloadEntries = createAsyncThunk<
void,
void,
{
state: RootState
}
>("entries/reload", async (arg, thunkApi) => {
const state = thunkApi.getState() const state = thunkApi.getState()
thunkApi.dispatch(loadEntries({ source: state.entries.source, clearSearch: false })) thunkApi.dispatch(loadEntries({ source: state.entries.source, clearSearch: false }))
}) })
@@ -123,15 +138,18 @@ export const markEntriesUpToEntry = createAsyncThunk<void, Entry, { state: RootS
) )
} }
) )
export const markAllEntries = createAsyncThunk<void, { sourceType: EntrySourceType; req: MarkRequest }, { state: RootState }>( export const markAllEntries = createAsyncThunk<
"entries/entry/markAll", void,
async (arg, thunkApi) => { { sourceType: EntrySourceType; req: MarkRequest },
const endpoint = arg.sourceType === "category" ? client.category.markEntries : client.feed.markEntries {
await endpoint(arg.req) state: RootState
thunkApi.dispatch(reloadEntries())
thunkApi.dispatch(reloadTree())
} }
) >("entries/entry/markAll", async (arg, thunkApi) => {
const endpoint = arg.sourceType === "category" ? client.category.markEntries : client.feed.markEntries
await endpoint(arg.req)
thunkApi.dispatch(reloadEntries())
thunkApi.dispatch(reloadTree())
})
export const starEntry = createAsyncThunk("entries/entry/star", (arg: { entry: Entry; starred: boolean }) => { export const starEntry = createAsyncThunk("entries/entry/star", (arg: { entry: Entry; starred: boolean }) => {
client.entry.star({ client.entry.star({
id: arg.entry.id, id: arg.entry.id,
@@ -175,31 +193,25 @@ export const selectEntry = createAsyncThunk<
if (arg.scrollToEntry) { if (arg.scrollToEntry) {
const entryElement = document.getElementById(Constants.dom.entryId(entry)) const entryElement = document.getElementById(Constants.dom.entryId(entry))
if (entryElement) { if (entryElement) {
const scrollSpeed = state.user.settings?.scrollSpeed const alwaysScrollToEntry = state.user.settings?.alwaysScrollToEntry
thunkApi.dispatch(entriesSlice.actions.setScrollingToEntry(true)) const entryEntirelyVisible = Constants.layout.isTopVisible(entryElement) && Constants.layout.isBottomVisible(entryElement)
scrollToEntry(entryElement, scrollSpeed, () => thunkApi.dispatch(entriesSlice.actions.setScrollingToEntry(false))) if (alwaysScrollToEntry || !entryEntirelyVisible) {
const scrollSpeed = state.user.settings?.scrollSpeed
thunkApi.dispatch(entriesSlice.actions.setScrollingToEntry(true))
scrollToEntry(entryElement, scrollSpeed, () => thunkApi.dispatch(entriesSlice.actions.setScrollingToEntry(false)))
}
} }
} }
}) })
const scrollToEntry = (entryElement: HTMLElement, scrollSpeed: number | undefined, onScrollEnded: () => void) => { const scrollToEntry = (entryElement: HTMLElement, scrollSpeed: number | undefined, onScrollEnded: () => void) => {
// the entry is entirely visible, no need to scroll scrollToWithCallback({
if (Constants.layout.isTopVisible(entryElement) && Constants.layout.isBottomVisible(entryElement)) { options: {
onScrollEnded() // add a small gap between the top of the content and the top of the page
return top: entryElement.offsetTop - Constants.layout.headerHeight - 3,
} behavior: scrollSpeed && scrollSpeed > 0 ? "smooth" : "auto",
},
const scrollArea = document.getElementById(Constants.dom.mainScrollAreaId) onScrollEnded,
if (scrollArea) { })
scrollToWithCallback({
element: scrollArea,
options: {
// add a small gap between the top of the content and the top of the page
top: entryElement.offsetTop - 3,
behavior: scrollSpeed && scrollSpeed > 0 ? "smooth" : "auto",
},
onScrollEnded,
})
}
} }
export const selectPreviousEntry = createAsyncThunk< export const selectPreviousEntry = createAsyncThunk<
@@ -248,7 +260,13 @@ export const selectNextEntry = createAsyncThunk<
) )
} }
}) })
export const tagEntry = createAsyncThunk<void, TagRequest, { state: RootState }>("entries/entry/tag", async (arg, thunkApi) => { export const tagEntry = createAsyncThunk<
void,
TagRequest,
{
state: RootState
}
>("entries/entry/tag", async (arg, thunkApi) => {
await client.entry.tag(arg) await client.entry.tag(arg)
thunkApi.dispatch(reloadTags()) thunkApi.dispatch(reloadTags())
}) })

View File

@@ -13,7 +13,15 @@ export const redirectToRegistration = createAsyncThunk("redirect/register", (_,
export const redirectToPasswordRecovery = createAsyncThunk("redirect/passwordRecovery", (_, thunkApi) => export const redirectToPasswordRecovery = createAsyncThunk("redirect/passwordRecovery", (_, thunkApi) =>
thunkApi.dispatch(redirectTo("/passwordRecovery")) 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 const { source } = thunkApi.getState().entries
thunkApi.dispatch(redirectTo(`/app/${source.type}/${source.id}`)) 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) => export const redirectToMetrics = createAsyncThunk("redirect/admin/metrics", (_, thunkApi) =>
thunkApi.dispatch(redirectTo("/app/admin/metrics")) 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 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({ export const redirectSlice = createSlice({
name: "redirect", name: "redirect",

View File

@@ -9,10 +9,14 @@ import { redirectTo } from "./redirect"
interface TreeState { interface TreeState {
rootCategory?: Category rootCategory?: Category
mobileMenuOpen: boolean mobileMenuOpen: boolean
sidebarWidth: number
sidebarVisible: boolean
} }
const initialState: TreeState = { const initialState: TreeState = {
mobileMenuOpen: false, mobileMenuOpen: false,
sidebarWidth: 350,
sidebarVisible: true,
} }
export const reloadTree = createAsyncThunk("tree/reload", () => client.category.getRoot().then(r => r.data)) export const reloadTree = createAsyncThunk("tree/reload", () => client.category.getRoot().then(r => r.data))
@@ -27,6 +31,12 @@ export const treeSlice = createSlice({
setMobileMenuOpen: (state, action: PayloadAction<boolean>) => { setMobileMenuOpen: (state, action: PayloadAction<boolean>) => {
state.mobileMenuOpen = action.payload state.mobileMenuOpen = action.payload
}, },
setSidebarWidth: (state, action: PayloadAction<number>) => {
state.sidebarWidth = action.payload
},
toggleSidebar: state => {
state.sidebarVisible = !state.sidebarVisible
},
}, },
extraReducers: builder => { extraReducers: builder => {
builder.addCase(reloadTree.fulfilled, (state, action) => { builder.addCase(reloadTree.fulfilled, (state, action) => {
@@ -54,5 +64,5 @@ export const treeSlice = createSlice({
}, },
}) })
export const { setMobileMenuOpen } = treeSlice.actions export const { setMobileMenuOpen, setSidebarWidth, toggleSidebar } = treeSlice.actions
export default treeSlice.reducer export default treeSlice.reducer

View File

@@ -80,6 +80,17 @@ export const changeScrollMarks = createAsyncThunk<
if (!settings) return if (!settings) return
client.user.saveSettings({ ...settings, scrollMarks }) client.user.saveSettings({ ...settings, scrollMarks })
}) })
export const changeAlwaysScrollToEntry = createAsyncThunk<
void,
boolean,
{
state: RootState
}
>("settings/alwaysScrollToEntry", (alwaysScrollToEntry, thunkApi) => {
const { settings } = thunkApi.getState().user
if (!settings) return
client.user.saveSettings({ ...settings, alwaysScrollToEntry })
})
export const changeSharingSetting = createAsyncThunk< export const changeSharingSetting = createAsyncThunk<
void, void,
{ site: keyof SharingSettings; value: boolean }, { site: keyof SharingSettings; value: boolean },
@@ -136,6 +147,10 @@ export const userSlice = createSlice({
if (!state.settings) return if (!state.settings) return
state.settings.scrollMarks = action.meta.arg state.settings.scrollMarks = action.meta.arg
}) })
builder.addCase(changeAlwaysScrollToEntry.pending, (state, action) => {
if (!state.settings) return
state.settings.alwaysScrollToEntry = action.meta.arg
})
builder.addCase(changeSharingSetting.pending, (state, action) => { builder.addCase(changeSharingSetting.pending, (state, action) => {
if (!state.settings) return if (!state.settings) return
state.settings.sharingSettings[action.meta.arg.site] = action.meta.arg.value state.settings.sharingSettings[action.meta.arg.site] = action.meta.arg.value
@@ -146,6 +161,7 @@ export const userSlice = createSlice({
changeScrollSpeed.fulfilled, changeScrollSpeed.fulfilled,
changeShowRead.fulfilled, changeShowRead.fulfilled,
changeScrollMarks.fulfilled, changeScrollMarks.fulfilled,
changeAlwaysScrollToEntry.fulfilled,
changeSharingSetting.fulfilled changeSharingSetting.fulfilled
), ),
() => { () => {

View File

@@ -230,9 +230,10 @@ export interface Settings {
readingOrder: ReadingOrder readingOrder: ReadingOrder
showRead: boolean showRead: boolean
scrollMarks: boolean scrollMarks: boolean
theme?: string
customCss?: string customCss?: string
customJs?: string
scrollSpeed: number scrollSpeed: number
alwaysScrollToEntry: boolean
sharingSettings: SharingSettings sharingSettings: SharingSettings
} }
@@ -271,7 +272,7 @@ export interface Subscription {
iconUrl: string iconUrl: string
unread: number unread: number
categoryId?: string categoryId?: string
position?: number position: number
newestItemTime?: number newestItemTime?: number
filter?: string filter?: string
} }

View File

@@ -1,3 +1,4 @@
import { throttle } from "throttle-debounce"
import { Category } from "./types" import { Category } from "./types"
export function visitCategoryTree(category: Category, visitor: (category: Category) => void): void { export function visitCategoryTree(category: Category, visitor: (category: Category) => void): void {
@@ -26,41 +27,21 @@ export const calculatePlaceholderSize = ({ width, height, maxWidth }: { width?:
return { width: placeholderWidth, height: placeholderHeight } return { width: placeholderWidth, height: placeholderHeight }
} }
export const scrollToWithCallback = ({ export const scrollToWithCallback = ({ options, onScrollEnded }: { options: ScrollToOptions; onScrollEnded: () => void }) => {
element,
options,
onScrollEnded,
}: {
element: HTMLElement
options: ScrollToOptions
onScrollEnded: () => void
}) => {
const offset = (options.top ?? 0).toFixed() const offset = (options.top ?? 0).toFixed()
const onScroll = () => { const onScroll = throttle(100, () => {
if (element.offsetTop.toFixed() === offset) { if (window.scrollY.toFixed() === offset) {
element.removeEventListener("scroll", onScroll) window.removeEventListener("scroll", onScroll)
onScrollEnded() onScrollEnded()
} }
} })
window.addEventListener("scroll", onScroll)
element.addEventListener("scroll", onScroll)
// scrollTo does not trigger if there's nothing to do, trigger it manually // scrollTo does not trigger if there's nothing to do, trigger it manually
onScroll() onScroll()
element.scrollTo(options) window.scrollTo(options)
} }
export const openLinkInBackgroundTab = (url: string) => { export const truncate = (str: string, n: number) => (str.length > n ? `${str.slice(0, n - 1)}\u2026` : str)
// 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,
})
)
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 131 KiB

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 121 KiB

After

Width:  |  Height:  |  Size: 44 KiB

View File

@@ -0,0 +1,37 @@
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 { useActionButton } from "hooks/useActionButton"
import { forwardRef, MouseEventHandler, ReactNode } from "react"
interface ActionButtonProps {
className?: string
icon?: ReactNode
label: ReactNode
onClick?: MouseEventHandler
variant?: ActionIconProps["variant"] & ButtonProps["variant"]
hideLabelOnDesktop?: boolean
showLabelOnMobile?: boolean
}
/**
* Switches between Button with label (desktop) and ActionIcon (mobile)
*/
export const ActionButton = forwardRef<HTMLButtonElement, ActionButtonProps>((props: ActionButtonProps, ref) => {
const { mobile } = useActionButton()
const theme = useMantineTheme()
const variant = props.variant ?? "subtle"
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={variant} size="xs" className={props.className} leftIcon={props.icon} onClick={props.onClick}>
{props.label}
</Button>
)
})
ActionButton.displayName = "HeaderButton"

View File

@@ -1,33 +0,0 @@
import { ActionIcon, Button, ButtonVariant, useMantineTheme } from "@mantine/core"
import { ActionIconVariant } from "@mantine/core/lib/ActionIcon/ActionIcon.styles"
import { useMediaQuery } from "@mantine/hooks"
import { forwardRef, MouseEventHandler, ReactNode } from "react"
interface ActionButtonProps {
className?: string
icon?: ReactNode
label?: string
onClick?: MouseEventHandler
variant?: ActionIconVariant & ButtonVariant
showLabelOnMobile?: boolean
}
/**
* Switches between Button with label (desktop) and ActionIcon (mobile)
*/
export const ActionButton = forwardRef<HTMLButtonElement, ActionButtonProps>((props: ActionButtonProps, ref) => {
const theme = useMantineTheme()
const variant = props.variant ?? "subtle"
const mobile = !useMediaQuery(`(min-width: ${theme.breakpoints.lg}px)`)
const iconOnly = !props.showLabelOnMobile && (mobile || !props.label)
return iconOnly ? (
<ActionIcon ref={ref} color={theme.primaryColor} variant={variant} className={props.className} onClick={props.onClick}>
{props.icon}
</ActionIcon>
) : (
<Button ref={ref} variant={variant} size="xs" className={props.className} leftIcon={props.icon} onClick={props.onClick}>
{props.label}
</Button>
)
})
ActionButton.displayName = "HeaderButton"

View File

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

View File

@@ -1,5 +0,0 @@
import { Group } from "@mantine/core"
export function ButtonToolbar(props: { children: React.ReactNode }) {
return <Group spacing={14}>{props.children}</Group>
}

View File

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

View File

@@ -1,4 +1,5 @@
import { Trans } from "@lingui/macro" import { Trans } from "@lingui/macro"
import { Tooltip } from "@mantine/core"
import dayjs from "dayjs" import dayjs from "dayjs"
import { useEffect, useState } from "react" import { useEffect, useState } from "react"
@@ -10,5 +11,10 @@ export function RelativeDate(props: { date: Date | number | undefined }) {
}, []) }, [])
if (!props.date) return <Trans>N/A</Trans> if (!props.date) return <Trans>N/A</Trans>
return <>{dayjs(props.date).from(dayjs(now))}</> const date = dayjs(props.date)
return (
<Tooltip label={date.toDate().toLocaleString()} openDelay={500}>
<span>{date.from(dayjs(now))}</span>
</Tooltip>
)
} }

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

View File

@@ -0,0 +1,36 @@
import { Input, Textarea } from "@mantine/core"
import RichCodeEditor from "components/code/RichCodeEditor"
import { useMobile } from "hooks/useMobile"
import { ReactNode } from "react"
interface CodeEditorProps {
description?: ReactNode
language: "css" | "javascript"
value: string
onChange: (value: string | undefined) => void
}
export function CodeEditor(props: CodeEditorProps) {
const mobile = useMobile()
return mobile ? (
// monaco mobile support is poor, fallback to textarea
<Textarea
autosize
minRows={4}
maxRows={15}
description={props.description}
styles={{
input: {
fontFamily: "monospace",
},
}}
value={props.value}
onChange={e => props.onChange(e.currentTarget.value)}
/>
) : (
<Input.Wrapper description={props.description}>
<RichCodeEditor height="30vh" language={props.language} value={props.value} onChange={props.onChange} />
</Input.Wrapper>
)
}

View File

@@ -0,0 +1,52 @@
import { useMantineTheme } from "@mantine/core"
import { Loader } from "components/Loader"
import { useAsync } from "react-async-hook"
const init = async () => {
window.MonacoEnvironment = {
async getWorker(_, label) {
let worker
if (label === "css") {
worker = await import("monaco-editor/esm/vs/language/css/css.worker?worker")
} else if (label === "javascript") {
worker = await import("monaco-editor/esm/vs/language/typescript/ts.worker?worker")
} else {
worker = await import("monaco-editor/esm/vs/editor/editor.worker?worker")
}
// eslint-disable-next-line new-cap
return new worker.default()
},
}
const monacoReact = await import("@monaco-editor/react")
const monaco = await import("monaco-editor")
monacoReact.loader.config({ monaco })
return monacoReact.Editor
}
interface RichCodeEditorProps {
height: number | string
language: "css" | "javascript"
value: string
onChange: (value: string | undefined) => void
}
function RichCodeEditor(props: RichCodeEditorProps) {
const theme = useMantineTheme()
const editorTheme = theme.colorScheme === "dark" ? "vs-dark" : "light"
const { result: Editor } = useAsync(init, [])
if (!Editor) return <Loader />
return (
<Editor
height={props.height}
defaultLanguage={props.language}
theme={editorTheme}
options={{ minimap: { enabled: false } }}
value={props.value}
onChange={props.onChange}
/>
)
}
export default RichCodeEditor

View File

@@ -1,12 +1,14 @@
import { Box, createStyles, Mark, TypographyStylesProvider } from "@mantine/core" import { Box, createStyles, Mark, TypographyStylesProvider } from "@mantine/core"
import { Constants } from "app/constants" import { Constants } from "app/constants"
import { useAppSelector } from "app/store"
import { calculatePlaceholderSize } from "app/utils" import { calculatePlaceholderSize } from "app/utils"
import { ImageWithPlaceholderWhileLoading } from "components/ImageWithPlaceholderWhileLoading" import { ImageWithPlaceholderWhileLoading } from "components/ImageWithPlaceholderWhileLoading"
import escapeStringRegexp from "escape-string-regexp"
import { ChildrenNode, Interweave, Matcher, MatchResponse, Node, TransformCallback } from "interweave" import { ChildrenNode, Interweave, Matcher, MatchResponse, Node, TransformCallback } from "interweave"
import React from "react"
export interface ContentProps { export interface ContentProps {
content: string content: string
highlight?: string
} }
const useStyles = createStyles(theme => ({ const useStyles = createStyles(theme => ({
@@ -63,7 +65,7 @@ class HighlightMatcher extends Matcher {
constructor(search: string) { constructor(search: string) {
super("highlight") super("highlight")
this.search = search this.search = escapeStringRegexp(search)
} }
match(string: string): MatchResponse<unknown> | null { match(string: string): MatchResponse<unknown> | null {
@@ -82,10 +84,10 @@ class HighlightMatcher extends Matcher {
} }
} }
export function Content(props: ContentProps) { // memoize component because Interweave is costly
const Content = React.memo((props: ContentProps) => {
const { classes } = useStyles() const { classes } = useStyles()
const search = useAppSelector(state => state.entries.search) const matchers = props.highlight ? [new HighlightMatcher(props.highlight)] : []
const matchers = search ? [new HighlightMatcher(search)] : []
return ( return (
<TypographyStylesProvider> <TypographyStylesProvider>
@@ -94,4 +96,6 @@ export function Content(props: ContentProps) {
</Box> </Box>
</TypographyStylesProvider> </TypographyStylesProvider>
) )
} })
export { Content }

View File

@@ -1,4 +1,4 @@
import { t } from "@lingui/macro" import { Trans } from "@lingui/macro"
import { openModal } from "@mantine/modals" import { openModal } from "@mantine/modals"
import { Constants } from "app/constants" import { Constants } from "app/constants"
import { import {
@@ -12,16 +12,18 @@ import {
selectPreviousEntry, selectPreviousEntry,
} from "app/slices/entries" } from "app/slices/entries"
import { redirectToRootCategory } from "app/slices/redirect" import { redirectToRootCategory } from "app/slices/redirect"
import { toggleSidebar } from "app/slices/tree"
import { useAppDispatch, useAppSelector } from "app/store" import { useAppDispatch, useAppSelector } from "app/store"
import { openLinkInBackgroundTab } from "app/utils"
import { KeyboardShortcutsHelp } from "components/KeyboardShortcutsHelp" import { KeyboardShortcutsHelp } from "components/KeyboardShortcutsHelp"
import { Loader } from "components/Loader" import { Loader } from "components/Loader"
import { useBrowserExtension } from "hooks/useBrowserExtension"
import { useMousetrap } from "hooks/useMousetrap" import { useMousetrap } from "hooks/useMousetrap"
import throttle from "lodash/throttle" import { useViewMode } from "hooks/useViewMode"
import { useEffect } from "react" import { useEffect } from "react"
import { useContextMenu } from "react-contexify"
import InfiniteScroll from "react-infinite-scroller" import InfiniteScroll from "react-infinite-scroller"
import { throttle } from "throttle-debounce"
import { FeedEntry } from "./FeedEntry" import { FeedEntry } from "./FeedEntry"
import { useViewMode } from "../../hooks/useViewMode"
export function FeedEntries() { export function FeedEntries() {
const source = useAppSelector(state => state.entries.source) const source = useAppSelector(state => state.entries.source)
@@ -29,16 +31,18 @@ export function FeedEntries() {
const entriesTimestamp = useAppSelector(state => state.entries.timestamp) const entriesTimestamp = useAppSelector(state => state.entries.timestamp)
const selectedEntryId = useAppSelector(state => state.entries.selectedEntryId) const selectedEntryId = useAppSelector(state => state.entries.selectedEntryId)
const hasMore = useAppSelector(state => state.entries.hasMore) const hasMore = useAppSelector(state => state.entries.hasMore)
const { viewMode } = useViewMode()
const scrollMarks = useAppSelector(state => state.user.settings?.scrollMarks) const scrollMarks = useAppSelector(state => state.user.settings?.scrollMarks)
const scrollingToEntry = useAppSelector(state => state.entries.scrollingToEntry) const scrollingToEntry = useAppSelector(state => state.entries.scrollingToEntry)
const sidebarVisible = useAppSelector(state => state.tree.sidebarVisible)
const { viewMode } = useViewMode()
const dispatch = useAppDispatch() const dispatch = useAppDispatch()
const { openLinkInBackgroundTab } = useBrowserExtension()
const selectedEntry = entries.find(e => e.id === selectedEntryId) const selectedEntry = entries.find(e => e.id === selectedEntryId)
const headerClicked = (entry: ExpendableEntry, event: React.MouseEvent) => { const headerClicked = (entry: ExpendableEntry, event: React.MouseEvent) => {
if (event.button === 1 || event.ctrlKey || event.metaKey) { const middleClick = event.button === 1 || event.ctrlKey || event.metaKey
// middle click if (middleClick || viewMode === "expanded") {
dispatch(markEntry({ entry, read: true })) dispatch(markEntry({ entry, read: true }))
} else if (event.button === 0) { } else if (event.button === 0) {
// main click // main click
@@ -56,10 +60,38 @@ export function FeedEntries() {
} }
} }
useEffect(() => { const contextMenu = useContextMenu()
const scrollArea = document.getElementById(Constants.dom.mainScrollAreaId) const headerRightClicked = (entry: ExpendableEntry, event: React.MouseEvent) => {
event.preventDefault()
contextMenu.show({
id: Constants.dom.entryContextMenuId(entry),
event,
})
}
const listener = () => { const bodyClicked = (entry: ExpendableEntry) => {
if (viewMode !== "expanded") return
dispatch(
selectEntry({
entry,
expand: true,
markAsRead: true,
scrollToEntry: true,
})
)
}
const swipedRight = (entry: ExpendableEntry) => dispatch(markEntry({ entry, read: !entry.read }))
// close context menu on scroll
useEffect(() => {
const listener = throttle(100, () => contextMenu.hideAll())
window.addEventListener("scroll", listener)
return () => window.removeEventListener("scroll", listener)
}, [contextMenu])
useEffect(() => {
const listener = throttle(100, () => {
if (viewMode !== "expanded") return if (viewMode !== "expanded") return
if (scrollingToEntry) return if (scrollingToEntry) return
@@ -81,11 +113,10 @@ export function FeedEntries() {
}) })
) )
} }
} })
const throttledListener = throttle(listener, 100) window.addEventListener("scroll", listener)
scrollArea?.addEventListener("scroll", throttledListener) return () => window.removeEventListener("scroll", listener)
return () => scrollArea?.removeEventListener("scroll", throttledListener) }, [dispatch, contextMenu, entries, viewMode, scrollMarks, scrollingToEntry])
}, [dispatch, entries, viewMode, scrollMarks, scrollingToEntry])
useMousetrap("r", () => dispatch(reloadEntries())) useMousetrap("r", () => dispatch(reloadEntries()))
useMousetrap("j", () => useMousetrap("j", () =>
@@ -137,9 +168,8 @@ export function FeedEntries() {
}) })
) )
} else { } else {
const scrollArea = document.getElementById(Constants.dom.mainScrollAreaId) window.scrollTo({
scrollArea?.scrollTo({ top: window.scrollY + document.documentElement.clientHeight * 0.8,
top: scrollArea.scrollTop + scrollArea.clientHeight * 0.8,
behavior: "smooth", behavior: "smooth",
}) })
} }
@@ -176,9 +206,8 @@ export function FeedEntries() {
}) })
) )
} else { } else {
const scrollArea = document.getElementById(Constants.dom.mainScrollAreaId) window.scrollTo({
scrollArea?.scrollTo({ top: window.scrollY - document.documentElement.clientHeight * 0.8,
top: scrollArea.scrollTop - scrollArea.clientHeight * 0.8,
behavior: "smooth", behavior: "smooth",
}) })
} }
@@ -211,7 +240,6 @@ export function FeedEntries() {
window.open(selectedEntry.url, "_blank", "noreferrer") window.open(selectedEntry.url, "_blank", "noreferrer")
}) })
useMousetrap("b", () => { useMousetrap("b", () => {
// simulate ctrl+click to open tab in background
if (!selectedEntry) return if (!selectedEntry) return
openLinkInBackgroundTab(selectedEntry.url) openLinkInBackgroundTab(selectedEntry.url)
}) })
@@ -234,17 +262,23 @@ export function FeedEntries() {
) )
}) })
useMousetrap("g a", () => dispatch(redirectToRootCategory())) useMousetrap("g a", () => dispatch(redirectToRootCategory()))
useMousetrap("?", () => openModal({ title: t`Keyboard shortcuts`, size: "xl", children: <KeyboardShortcutsHelp /> })) useMousetrap("f", () => dispatch(toggleSidebar()))
useMousetrap("?", () =>
openModal({
title: <Trans>Keyboard shortcuts</Trans>,
size: "xl",
children: <KeyboardShortcutsHelp />,
})
)
if (!entries) return <Loader /> if (!entries) return <Loader />
return ( return (
<InfiniteScroll <InfiniteScroll
id="entries"
initialLoad={false} initialLoad={false}
loadMore={() => dispatch(loadMoreEntries())} loadMore={() => dispatch(loadMoreEntries())}
hasMore={hasMore} hasMore={hasMore}
loader={<Loader key={0} />} loader={<Loader key={0} />}
useWindow={false}
getScrollParent={() => document.getElementById(Constants.dom.mainScrollAreaId)}
> >
{entries.map(entry => ( {entries.map(entry => (
<div <div
@@ -256,8 +290,13 @@ export function FeedEntries() {
<FeedEntry <FeedEntry
entry={entry} entry={entry}
expanded={!!entry.expanded || viewMode === "expanded"} expanded={!!entry.expanded || viewMode === "expanded"}
selected={entry.id === selectedEntryId}
showSelectionIndicator={entry.id === selectedEntryId && (!entry.expanded || viewMode === "expanded")} showSelectionIndicator={entry.id === selectedEntryId && (!entry.expanded || viewMode === "expanded")}
maxWidth={sidebarVisible ? Constants.layout.entryMaxWidth : undefined}
onHeaderClick={event => headerClicked(entry, event)} onHeaderClick={event => headerClicked(entry, event)}
onHeaderRightClick={event => headerRightClicked(entry, event)}
onBodyClick={() => bodyClicked(entry)}
onSwipedRight={() => swipedRight(entry)}
/> />
</div> </div>
))} ))}

View File

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

View File

@@ -1,4 +1,5 @@
import { Box } from "@mantine/core" import { Box } from "@mantine/core"
import { useAppSelector } from "app/store"
import { Entry } from "app/types" import { Entry } from "app/types"
import { Content } from "./Content" import { Content } from "./Content"
import { Enclosure } from "./Enclosure" import { Enclosure } from "./Enclosure"
@@ -9,10 +10,11 @@ export interface FeedEntryBodyProps {
} }
export function FeedEntryBody(props: FeedEntryBodyProps) { export function FeedEntryBody(props: FeedEntryBodyProps) {
const search = useAppSelector(state => state.entries.search)
return ( return (
<Box> <Box>
<Box> <Box>
<Content content={props.entry.content} /> <Content content={props.entry.content} highlight={search} />
</Box> </Box>
{props.entry.enclosureType && props.entry.enclosureUrl && ( {props.entry.enclosureType && props.entry.enclosureUrl && (
<Box pt="md"> <Box pt="md">

View File

@@ -1,14 +1,13 @@
import { t, Trans } from "@lingui/macro" import { Trans } from "@lingui/macro"
import { createStyles, Group } from "@mantine/core" import { createStyles, Group } from "@mantine/core"
import { Constants } from "app/constants" import { Constants } from "app/constants"
import { markEntriesUpToEntry, markEntry, starEntry } from "app/slices/entries" import { markEntriesUpToEntry, markEntry, starEntry } from "app/slices/entries"
import { redirectToFeed } from "app/slices/redirect" import { redirectToFeed } from "app/slices/redirect"
import { useAppDispatch, useAppSelector } from "app/store" import { useAppDispatch, useAppSelector } from "app/store"
import { Entry } from "app/types" import { Entry } from "app/types"
import { openLinkInBackgroundTab } from "app/utils" import { truncate } from "app/utils"
import { throttle, truncate } from "lodash" import { useBrowserExtension } from "hooks/useBrowserExtension"
import { useEffect } from "react" import { Item, Menu, Separator } from "react-contexify"
import { Item, Menu, Separator, useContextMenu } from "react-contexify"
import { TbArrowBarToDown, TbExternalLink, TbEyeCheck, TbEyeOff, TbRss, TbStar, TbStarOff } from "react-icons/tb" import { TbArrowBarToDown, TbExternalLink, TbEyeCheck, TbEyeOff, TbRss, TbStar, TbStarOff } from "react-icons/tb"
interface FeedEntryContextMenuProps { interface FeedEntryContextMenuProps {
@@ -28,14 +27,14 @@ const useStyles = createStyles(theme => ({
}, },
})) }))
const menuId = (entry: Entry) => entry.id
export function FeedEntryContextMenu(props: FeedEntryContextMenuProps) { export function FeedEntryContextMenu(props: FeedEntryContextMenuProps) {
const { classes, theme } = useStyles() const { classes, theme } = useStyles()
const sourceType = useAppSelector(state => state.entries.source.type) const sourceType = useAppSelector(state => state.entries.source.type)
const dispatch = useAppDispatch() const dispatch = useAppDispatch()
const { openLinkInBackgroundTab } = useBrowserExtension()
return ( return (
<Menu id={menuId(props.entry)} theme={theme.colorScheme} animation={false} className={classes.menu}> <Menu id={Constants.dom.entryContextMenuId(props.entry)} theme={theme.colorScheme} animation={false} className={classes.menu}>
<Item <Item
onClick={() => { onClick={() => {
window.open(props.entry.url, "_blank", "noreferrer") window.open(props.entry.url, "_blank", "noreferrer")
@@ -64,13 +63,13 @@ export function FeedEntryContextMenu(props: FeedEntryContextMenuProps) {
<Item onClick={() => dispatch(starEntry({ entry: props.entry, starred: !props.entry.starred }))}> <Item onClick={() => dispatch(starEntry({ entry: props.entry, starred: !props.entry.starred }))}>
<Group> <Group>
{props.entry.starred ? <TbStarOff size={iconSize} /> : <TbStar size={iconSize} />} {props.entry.starred ? <TbStarOff size={iconSize} /> : <TbStar size={iconSize} />}
{props.entry.starred ? t`Unstar` : t`Star`} {props.entry.starred ? <Trans>Unstar</Trans> : <Trans>Star</Trans>}
</Group> </Group>
</Item> </Item>
<Item onClick={() => dispatch(markEntry({ entry: props.entry, read: !props.entry.read }))}> <Item onClick={() => dispatch(markEntry({ entry: props.entry, read: !props.entry.read }))}>
<Group> <Group>
{props.entry.read ? <TbEyeOff size={iconSize} /> : <TbEyeCheck size={iconSize} />} {props.entry.read ? <TbEyeOff size={iconSize} /> : <TbEyeCheck size={iconSize} />}
{props.entry.read ? t`Keep unread` : t`Mark as read`} {props.entry.read ? <Trans>Keep unread</Trans> : <Trans>Mark as read</Trans>}
</Group> </Group>
</Item> </Item>
<Item onClick={() => dispatch(markEntriesUpToEntry(props.entry))}> <Item onClick={() => dispatch(markEntriesUpToEntry(props.entry))}>
@@ -91,7 +90,7 @@ export function FeedEntryContextMenu(props: FeedEntryContextMenuProps) {
> >
<Group> <Group>
<TbRss size={iconSize} /> <TbRss size={iconSize} />
<Trans>Go to {truncate(props.entry.feedName)}</Trans> <Trans>Go to {truncate(props.entry.feedName, 30)}</Trans>
</Group> </Group>
</Item> </Item>
</> </>
@@ -99,29 +98,3 @@ export function FeedEntryContextMenu(props: FeedEntryContextMenuProps) {
</Menu> </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(listener, 100)
scrollArea?.addEventListener("scroll", throttledListener)
return () => scrollArea?.removeEventListener("scroll", throttledListener)
}, [contextMenu])
return { onContextMenu }
}

View File

@@ -1,14 +1,11 @@
import { t } from "@lingui/macro" import { t, Trans } from "@lingui/macro"
import { Group, Indicator, MultiSelect, Popover } from "@mantine/core" import { Group, Indicator, MultiSelect, Popover } from "@mantine/core"
import { useMediaQuery } from "@mantine/hooks"
import { Constants } from "app/constants"
import { markEntriesUpToEntry, markEntry, starEntry, tagEntry } from "app/slices/entries" import { markEntriesUpToEntry, markEntry, starEntry, tagEntry } from "app/slices/entries"
import { useAppDispatch, useAppSelector } from "app/store" import { useAppDispatch, useAppSelector } from "app/store"
import { Entry } from "app/types" import { Entry } from "app/types"
import { ActionButton } from "components/ActionButtton" import { ActionButton } from "components/ActionButton"
import { ButtonToolbar } from "components/ButtonToolbar" import { useActionButton } from "hooks/useActionButton"
import { throttle } from "lodash" import { useMobile } from "hooks/useMobile"
import { useEffect, useState } from "react"
import { TbArrowBarToDown, TbExternalLink, TbEyeCheck, TbEyeOff, TbShare, TbStar, TbStarOff, TbTag } from "react-icons/tb" import { TbArrowBarToDown, TbExternalLink, TbEyeCheck, TbEyeOff, TbShare, TbStar, TbStarOff, TbTag } from "react-icons/tb"
import { ShareButtons } from "./ShareButtons" import { ShareButtons } from "./ShareButtons"
@@ -17,10 +14,10 @@ interface FeedEntryFooterProps {
} }
export function FeedEntryFooter(props: FeedEntryFooterProps) { export function FeedEntryFooter(props: FeedEntryFooterProps) {
const [scrollPosition, setScrollPosition] = useState(0)
const sharingSettings = useAppSelector(state => state.user.settings?.sharingSettings) const sharingSettings = useAppSelector(state => state.user.settings?.sharingSettings)
const tags = useAppSelector(state => state.user.tags) const tags = useAppSelector(state => state.user.tags)
const mobile = !useMediaQuery(`(min-width: ${Constants.layout.mobileBreakpoint}px)`) const mobile = useMobile()
const { spacing } = useActionButton()
const dispatch = useAppDispatch() const dispatch = useAppDispatch()
const showSharingButtons = sharingSettings && Object.values(sharingSettings).some(v => v) const showSharingButtons = sharingSettings && Object.values(sharingSettings).some(v => v)
@@ -34,36 +31,26 @@ export function FeedEntryFooter(props: FeedEntryFooterProps) {
}) })
) )
useEffect(() => {
const scrollArea = document.getElementById(Constants.dom.mainScrollAreaId)
const listener = () => setScrollPosition(scrollArea ? scrollArea.scrollTop : 0)
const throttledListener = throttle(listener, 100)
scrollArea?.addEventListener("scroll", throttledListener)
return () => scrollArea?.removeEventListener("scroll", throttledListener)
}, [])
return ( return (
<Group position="apart"> <Group position="apart">
<ButtonToolbar> <Group spacing={spacing}>
{props.entry.markable && ( {props.entry.markable && (
<ActionButton <ActionButton
icon={props.entry.read ? <TbEyeOff size={18} /> : <TbEyeCheck size={18} />} 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} onClick={readStatusButtonClicked}
/> />
)} )}
<ActionButton <ActionButton
icon={props.entry.starred ? <TbStarOff size={18} /> : <TbStar size={18} />} 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 }))} onClick={() => dispatch(starEntry({ entry: props.entry, starred: !props.entry.starred }))}
/> />
{showSharingButtons && ( {showSharingButtons && (
<Popover withArrow withinPortal shadow="md" positionDependencies={[scrollPosition]} closeOnClickOutside={!mobile}> <Popover withArrow withinPortal shadow="md" closeOnClickOutside={!mobile}>
<Popover.Target> <Popover.Target>
<ActionButton icon={<TbShare size={18} />} label={t`Share`} /> <ActionButton icon={<TbShare size={18} />} label={<Trans>Share</Trans>} />
</Popover.Target> </Popover.Target>
<Popover.Dropdown> <Popover.Dropdown>
<ShareButtons url={props.entry.url} description={props.entry.title} /> <ShareButtons url={props.entry.url} description={props.entry.title} />
@@ -72,10 +59,10 @@ export function FeedEntryFooter(props: FeedEntryFooterProps) {
)} )}
{tags && ( {tags && (
<Popover withArrow withinPortal shadow="md" positionDependencies={[scrollPosition]} closeOnClickOutside={!mobile}> <Popover withArrow withinPortal shadow="md" closeOnClickOutside={!mobile}>
<Popover.Target> <Popover.Target>
<Indicator label={props.entry.tags.length} showZero={false} dot={false} inline size={16}> <Indicator label={props.entry.tags.length} disabled={props.entry.tags.length === 0} inline size={16}>
<ActionButton icon={<TbTag size={18} />} label={t`Tags`} /> <ActionButton icon={<TbTag size={18} />} label={<Trans>Tags</Trans>} />
</Indicator> </Indicator>
</Popover.Target> </Popover.Target>
<Popover.Dropdown> <Popover.Dropdown>
@@ -94,13 +81,13 @@ export function FeedEntryFooter(props: FeedEntryFooterProps) {
)} )}
<a href={props.entry.url} target="_blank" rel="noreferrer"> <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> </a>
</ButtonToolbar> </Group>
<ActionButton <ActionButton
icon={<TbArrowBarToDown size={18} />} 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))} onClick={() => dispatch(markEntriesUpToEntry(props.entry))}
/> />
</Group> </Group>

View File

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

View File

@@ -36,9 +36,14 @@ export function ImportOpml() {
<form onSubmit={form.onSubmit(v => importOpml.execute(v.file))}> <form onSubmit={form.onSubmit(v => importOpml.execute(v.file))}>
<Stack> <Stack>
<FileInput <FileInput
label={t`OPML file`} label={<Trans>OPML file</Trans>}
placeholder={t`OPML file`} 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")} {...form.getInputProps("file")}
required required
accept="application/xml" 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 { Box, Button, Group, Stack, Stepper, TextInput } from "@mantine/core"
import { useForm } from "@mantine/form" import { useForm } from "@mantine/form"
import { client, errorToStrings } from "app/client" import { client, errorToStrings } from "app/client"
@@ -74,24 +74,33 @@ export function Subscribe() {
<form onSubmit={nextStep}> <form onSubmit={nextStep}>
<Stepper active={activeStep} onStepClick={setActiveStep}> <Stepper active={activeStep} onStepClick={setActiveStep}>
<Stepper.Step <Stepper.Step
label={t`Analyze feed`} label={<Trans>Analyze feed</Trans>}
description={t`Check that the feed is working`} description={<Trans>Check that the feed is working</Trans>}
allowStepSelect={activeStep === 1} allowStepSelect={activeStep === 1}
> >
<TextInput <TextInput
label={t`Feed URL`} label={<Trans>Feed URL</Trans>}
placeholder="http://www.mysite.com/rss" 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 required
autoFocus autoFocus
{...step0Form.getInputProps("url")} {...step0Form.getInputProps("url")}
/> />
</Stepper.Step> </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> <Stack>
<TextInput label={t`Feed URL`} {...step1Form.getInputProps("url")} disabled /> <TextInput label={<Trans>Feed URL</Trans>} {...step1Form.getInputProps("url")} disabled />
<TextInput label={t`Feed name`} {...step1Form.getInputProps("title")} required autoFocus /> <TextInput label={<Trans>Feed name</Trans>} {...step1Form.getInputProps("title")} required autoFocus />
<CategorySelect label={t`Category`} {...step1Form.getInputProps("categoryId")} clearable /> <CategorySelect label={<Trans>Category</Trans>} {...step1Form.getInputProps("categoryId")} clearable />
</Stack> </Stack>
</Stepper.Step> </Stepper.Step>
</Stepper> </Stepper>

View File

@@ -1,14 +1,29 @@
import { t } from "@lingui/macro" import { t, Trans } from "@lingui/macro"
import { ActionIcon, Center, Divider, Indicator, Popover, TextInput } from "@mantine/core" import { ActionIcon, Box, Center, Divider, Group, Indicator, Popover, TextInput } from "@mantine/core"
import { useForm } from "@mantine/form" import { useForm } from "@mantine/form"
import { reloadEntries, search } from "app/slices/entries" import { reloadEntries, search, selectNextEntry, selectPreviousEntry } from "app/slices/entries"
import { changeReadingMode, changeReadingOrder } from "app/slices/user" import { changeReadingMode, changeReadingOrder } from "app/slices/user"
import { useAppDispatch, useAppSelector } from "app/store" import { useAppDispatch, useAppSelector } from "app/store"
import { ActionButton } from "components/ActionButtton" import { ActionButton } from "components/ActionButton"
import { ButtonToolbar } from "components/ButtonToolbar"
import { Loader } from "components/Loader" import { Loader } from "components/Loader"
import { useActionButton } from "hooks/useActionButton"
import { useBrowserExtension } from "hooks/useBrowserExtension"
import { useMobile } from "hooks/useMobile"
import { useEffect } from "react" 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,
TbSortAscending,
TbSortDescending,
TbUser,
TbX,
} from "react-icons/tb"
import { MarkAllAsReadButton } from "./MarkAllAsReadButton" import { MarkAllAsReadButton } from "./MarkAllAsReadButton"
import { ProfileMenu } from "./ProfileMenu" import { ProfileMenu } from "./ProfileMenu"
@@ -16,11 +31,32 @@ function HeaderDivider() {
return <Divider orientation="vertical" /> return <Divider orientation="vertical" />
} }
function HeaderToolbar(props: { children: React.ReactNode }) {
const { spacing } = useActionButton()
const mobile = useMobile("480px")
return mobile ? (
// on mobile use all available width
<Box
sx={{
width: "100%",
display: "flex",
justifyContent: "space-between",
}}
>
{props.children}
</Box>
) : (
<Group spacing={spacing}>{props.children}</Group>
)
}
const iconSize = 18 const iconSize = 18
export function Header() { export function Header() {
const settings = useAppSelector(state => state.user.settings) const settings = useAppSelector(state => state.user.settings)
const profile = useAppSelector(state => state.user.profile) const profile = useAppSelector(state => state.user.profile)
const searchFromStore = useAppSelector(state => state.entries.search) const searchFromStore = useAppSelector(state => state.entries.search)
const { isBrowserExtensionPopup, openSettingsPage, openAppInNewTab } = useBrowserExtension()
const dispatch = useAppDispatch() const dispatch = useAppDispatch()
const searchForm = useForm<{ search: string }>({ const searchForm = useForm<{ search: string }>({
@@ -39,27 +75,60 @@ export function Header() {
if (!settings) return <Loader /> if (!settings) return <Loader />
return ( return (
<Center> <Center>
<ButtonToolbar> <HeaderToolbar>
<ActionButton icon={<TbRefresh size={iconSize} />} label={t`Refresh`} onClick={() => dispatch(reloadEntries())} /> <ActionButton
icon={<TbArrowDown size={iconSize} />}
label={<Trans>Next</Trans>}
onClick={() =>
dispatch(
selectNextEntry({
expand: true,
markAsRead: true,
scrollToEntry: true,
})
)
}
/>
<ActionButton
icon={<TbArrowUp size={iconSize} />}
label={<Trans>Previous</Trans>}
onClick={() =>
dispatch(
selectPreviousEntry({
expand: true,
markAsRead: true,
scrollToEntry: true,
})
)
}
/>
<HeaderDivider />
<ActionButton
icon={<TbRefresh size={iconSize} />}
label={<Trans>Refresh</Trans>}
onClick={() => dispatch(reloadEntries())}
/>
<MarkAllAsReadButton iconSize={iconSize} /> <MarkAllAsReadButton iconSize={iconSize} />
<HeaderDivider /> <HeaderDivider />
<ActionButton <ActionButton
icon={settings.readingMode === "all" ? <TbEye size={iconSize} /> : <TbEyeOff size={iconSize} />} 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"))} onClick={() => dispatch(changeReadingMode(settings.readingMode === "all" ? "unread" : "all"))}
/> />
<ActionButton <ActionButton
icon={settings.readingOrder === "asc" ? <TbArrowUp size={iconSize} /> : <TbArrowDown size={iconSize} />} icon={settings.readingOrder === "asc" ? <TbSortAscending size={iconSize} /> : <TbSortDescending 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"))} onClick={() => dispatch(changeReadingOrder(settings.readingOrder === "asc" ? "desc" : "asc"))}
/> />
<Popover> <Popover>
<Popover.Target> <Popover.Target>
<Indicator disabled={!searchFromStore}> <Indicator disabled={!searchFromStore}>
<ActionButton icon={<TbSearch size={iconSize} />} label={t`Search`} /> <ActionButton icon={<TbSearch size={iconSize} />} label={<Trans>Search</Trans>} />
</Indicator> </Indicator>
</Popover.Target> </Popover.Target>
<Popover.Dropdown> <Popover.Dropdown>
@@ -82,7 +151,24 @@ export function Header() {
<HeaderDivider /> <HeaderDivider />
<ProfileMenu control={<ActionButton icon={<TbUser size={iconSize} />} label={profile?.name} />} /> <ProfileMenu control={<ActionButton icon={<TbUser size={iconSize} />} label={profile?.name} />} />
</ButtonToolbar>
{isBrowserExtensionPopup && (
<>
<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()}
/>
</>
)}
</HeaderToolbar>
</Center> </Center>
) )
} }

View File

@@ -1,9 +1,9 @@
import { t, Trans } from "@lingui/macro" import { Trans } from "@lingui/macro"
import { Button, Code, Group, Modal, Slider, Stack, Text } from "@mantine/core" import { Button, Code, Group, Modal, Slider, Stack, Text } from "@mantine/core"
import { markAllEntries } from "app/slices/entries" import { markAllEntries } from "app/slices/entries"
import { useAppDispatch, useAppSelector } from "app/store" import { useAppDispatch, useAppSelector } from "app/store"
import { ActionButton } from "components/ActionButtton" import { ActionButton } from "components/ActionButton"
import { useState } from "react" import { useState } from "react"
import { TbChecks } from "react-icons/tb" import { TbChecks } from "react-icons/tb"
@@ -17,7 +17,7 @@ export function MarkAllAsReadButton(props: { iconSize: number }) {
return ( 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> <Stack>
<Text size="sm"> <Text size="sm">
{threshold === 0 && ( {threshold === 0 && (
@@ -72,7 +72,7 @@ export function MarkAllAsReadButton(props: { iconSize: number }) {
</Modal> </Modal>
<ActionButton <ActionButton
icon={<TbChecks size={props.iconSize} />} icon={<TbChecks size={props.iconSize} />}
label={t`Mark all as read`} label={<Trans>Mark all as read</Trans>}
onClick={() => { onClick={() => {
setThreshold(0) setThreshold(0)
setOpened(true) setOpened(true)

View File

@@ -1,13 +1,15 @@
import { t, Trans } from "@lingui/macro" import { Trans } from "@lingui/macro"
import { Box, Divider, Group, Menu, SegmentedControl, SegmentedControlItem, useMantineColorScheme } from "@mantine/core" import { Box, Divider, Group, Menu, SegmentedControl, SegmentedControlItem, useMantineColorScheme } from "@mantine/core"
import { showNotification } from "@mantine/notifications" import { showNotification } from "@mantine/notifications"
import { client } from "app/client" import { client } from "app/client"
import { redirectToAbout, redirectToAdminUsers, redirectToMetrics, redirectToSettings } from "app/slices/redirect" import { redirectToAbout, redirectToAdminUsers, redirectToDonate, redirectToMetrics, redirectToSettings } from "app/slices/redirect"
import { useAppDispatch, useAppSelector } from "app/store" import { useAppDispatch, useAppSelector } from "app/store"
import { ViewMode } from "app/types" import { ViewMode } from "app/types"
import { useViewMode } from "hooks/useViewMode"
import { useState } from "react" import { useState } from "react"
import { import {
TbChartLine, TbChartLine,
TbHeartFilled,
TbHelp, TbHelp,
TbLayoutList, TbLayoutList,
TbList, TbList,
@@ -20,7 +22,6 @@ import {
TbUsers, TbUsers,
TbWorldDownload, TbWorldDownload,
} from "react-icons/tb" } from "react-icons/tb"
import { useViewMode } from "../../hooks/useViewMode"
interface ProfileMenuProps { interface ProfileMenuProps {
control: React.ReactElement control: React.ReactElement
@@ -111,7 +112,7 @@ export function ProfileMenu(props: ProfileMenuProps) {
onClick={() => onClick={() =>
client.feed.refreshAll().then(() => { client.feed.refreshAll().then(() => {
showNotification({ showNotification({
message: t`Your feeds have been queued for refresh.`, message: <Trans>Your feeds have been queued for refresh.</Trans>,
color: "green", color: "green",
autoClose: 1000, autoClose: 1000,
}) })
@@ -123,6 +124,7 @@ export function ProfileMenu(props: ProfileMenuProps) {
</Menu.Item> </Menu.Item>
<Divider /> <Divider />
<Menu.Label> <Menu.Label>
<Trans>Theme</Trans> <Trans>Theme</Trans>
</Menu.Label> </Menu.Label>
@@ -131,6 +133,7 @@ export function ProfileMenu(props: ProfileMenuProps) {
</Menu.Item> </Menu.Item>
<Divider /> <Divider />
<Menu.Label> <Menu.Label>
<Trans>Display</Trans> <Trans>Display</Trans>
</Menu.Label> </Menu.Label>
@@ -171,6 +174,17 @@ export function ProfileMenu(props: ProfileMenuProps) {
)} )}
<Divider /> <Divider />
<Menu.Item
icon={<TbHeartFilled size={iconSize} color="red" />}
onClick={() => {
dispatch(redirectToDonate())
setOpened(false)
}}
>
<Trans>Donate</Trans>
</Menu.Item>
<Menu.Item <Menu.Item
icon={<TbHelp size={iconSize} />} icon={<TbHelp size={iconSize} />}
onClick={() => { onClick={() => {

View File

@@ -1,11 +1,8 @@
import { Box, MediaQuery } from "@mantine/core" import { Box } from "@mantine/core"
import { Constants } from "app/constants" import { useMobile } from "hooks/useMobile"
import React from "react" import React from "react"
export function OnDesktop(props: { children: React.ReactNode }) { export function OnDesktop(props: { children: React.ReactNode }) {
return ( const mobile = useMobile()
<MediaQuery smallerThan={Constants.layout.mobileBreakpoint} styles={{ display: "none" }}> return <Box>{!mobile && props.children}</Box>
<Box>{props.children}</Box>
</MediaQuery>
)
} }

View File

@@ -1,11 +1,8 @@
import { Box, MediaQuery } from "@mantine/core" import { Box } from "@mantine/core"
import { Constants } from "app/constants" import { useMobile } from "hooks/useMobile"
import React from "react" import React from "react"
export function OnMobile(props: { children: React.ReactNode }) { export function OnMobile(props: { children: React.ReactNode }) {
return ( const mobile = useMobile()
<MediaQuery largerThan={Constants.layout.mobileBreakpoint} styles={{ display: "none" }}> return <Box>{mobile && props.children}</Box>
<Box>{props.children}</Box>
</MediaQuery>
)
} }

View File

@@ -0,0 +1,83 @@
import { Trans } from "@lingui/macro"
import { Box, Button, Group, Stack } 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 { CodeEditor } from "components/code/CodeEditor"
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>
<CodeEditor
description={<Trans>Custom CSS rules that will be applied</Trans>}
language="css"
{...form.getInputProps("customCss")}
/>
<CodeEditor
description={<Trans>Custom JS code that will be executed on page load</Trans>}
language="javascript"
{...form.getInputProps("customJs")}
/>
<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,7 +1,14 @@
import { t } from "@lingui/macro" import { Trans } from "@lingui/macro"
import { Divider, Select, SimpleGrid, Stack, Switch } from "@mantine/core" import { Divider, Select, SimpleGrid, Stack, Switch } from "@mantine/core"
import { Constants } from "app/constants" import { Constants } from "app/constants"
import { changeLanguage, changeScrollMarks, changeScrollSpeed, changeSharingSetting, changeShowRead } from "app/slices/user" import {
changeAlwaysScrollToEntry,
changeLanguage,
changeScrollMarks,
changeScrollSpeed,
changeSharingSetting,
changeShowRead,
} from "app/slices/user"
import { useAppDispatch, useAppSelector } from "app/store" import { useAppDispatch, useAppSelector } from "app/store"
import { SharingSettings } from "app/types" import { SharingSettings } from "app/types"
import { locales } from "i18n" import { locales } from "i18n"
@@ -11,13 +18,14 @@ export function DisplaySettings() {
const scrollSpeed = useAppSelector(state => state.user.settings?.scrollSpeed) const scrollSpeed = useAppSelector(state => state.user.settings?.scrollSpeed)
const showRead = useAppSelector(state => state.user.settings?.showRead) const showRead = useAppSelector(state => state.user.settings?.showRead)
const scrollMarks = useAppSelector(state => state.user.settings?.scrollMarks) const scrollMarks = useAppSelector(state => state.user.settings?.scrollMarks)
const alwaysScrollToEntry = useAppSelector(state => state.user.settings?.alwaysScrollToEntry)
const sharingSettings = useAppSelector(state => state.user.settings?.sharingSettings) const sharingSettings = useAppSelector(state => state.user.settings?.sharingSettings)
const dispatch = useAppDispatch() const dispatch = useAppDispatch()
return ( return (
<Stack> <Stack>
<Select <Select
description={t`Language`} description={<Trans>Language</Trans>}
value={language} value={language}
data={locales.map(l => ({ data={locales.map(l => ({
value: l.key, value: l.key,
@@ -27,24 +35,30 @@ export function DisplaySettings() {
/> />
<Switch <Switch
label={t`Scroll smoothly when navigating between entries`} label={<Trans>Scroll smoothly when navigating between entries</Trans>}
checked={scrollSpeed ? scrollSpeed > 0 : false} checked={scrollSpeed ? scrollSpeed > 0 : false}
onChange={e => dispatch(changeScrollSpeed(e.currentTarget.checked))} onChange={e => dispatch(changeScrollSpeed(e.currentTarget.checked))}
/> />
<Switch <Switch
label={t`Show feeds and categories with no unread entries`} label={<Trans>Always scroll selected entry to the top of the page, even if it fits entirely on screen</Trans>}
checked={alwaysScrollToEntry}
onChange={e => dispatch(changeAlwaysScrollToEntry(e.currentTarget.checked))}
/>
<Switch
label={<Trans>Show feeds and categories with no unread entries</Trans>}
checked={showRead} checked={showRead}
onChange={e => dispatch(changeShowRead(e.currentTarget.checked))} onChange={e => dispatch(changeShowRead(e.currentTarget.checked))}
/> />
<Switch <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} checked={scrollMarks}
onChange={e => dispatch(changeScrollMarks(e.currentTarget.checked))} 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}> <SimpleGrid cols={2}>
{(Object.keys(Constants.sharing) as Array<keyof SharingSettings>).map(site => ( {(Object.keys(Constants.sharing) as Array<keyof SharingSettings>).map(site => (

View File

@@ -41,13 +41,13 @@ export function ProfileSettings() {
const openDeleteProfileModal = () => const openDeleteProfileModal = () =>
openConfirmModal({ openConfirmModal({
title: t`Delete account`, title: <Trans>Delete account</Trans>,
children: ( children: (
<Text size="sm"> <Text size="sm">
<Trans>Are you sure you want to delete your account? There's no turning back!</Trans> <Trans>Are you sure you want to delete your account? There's no turning back!</Trans>
</Text> </Text>
), ),
labels: { confirm: t`Confirm`, cancel: t`Cancel` }, labels: { confirm: <Trans>Confirm</Trans>, cancel: <Trans>Cancel</Trans> },
confirmProps: { color: "red" }, confirmProps: { color: "red" },
onConfirm: () => deleteProfile.execute(), onConfirm: () => deleteProfile.execute(),
}) })
@@ -77,12 +77,19 @@ export function ProfileSettings() {
<form onSubmit={form.onSubmit(saveProfile.execute)}> <form onSubmit={form.onSubmit(saveProfile.execute)}>
<Stack> <Stack>
<Input.Wrapper label={t`User name`}> <Input.Wrapper label={<Trans>User name</Trans>}>
<Box>{profile?.name}</Box> <Box>{profile?.name}</Box>
</Input.Wrapper> </Input.Wrapper>
<TextInput label={<Trans>API key</Trans>} readOnly value={profile?.apiKey} />
<Input.Wrapper <Input.Wrapper
label={t`OPML export`} label={<Trans>OPML export</Trans>}
description={t`Export your subscriptions and categories as an OPML file that can be imported in other feed reading services`} description={
<Trans>
Export your subscriptions and categories as an OPML file that can be imported in other feed reading services
</Trans>
}
> >
<Box> <Box>
<Anchor href="rest/feed/export" download="commafeed_opml.xml"> <Anchor href="rest/feed/export" download="commafeed_opml.xml">
@@ -90,21 +97,23 @@ export function ProfileSettings() {
</Anchor> </Anchor>
</Box> </Box>
</Input.Wrapper> </Input.Wrapper>
<Divider />
<PasswordInput <PasswordInput
label={t`Current password`} label={<Trans>Current password</Trans>}
description={t`Enter your current password to change profile settings`} description={<Trans>Enter your current password to change profile settings</Trans>}
required required
{...form.getInputProps("currentPassword")} {...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 <PasswordInput
label={t`New password`} label={<Trans>New password</Trans>}
description={t`Changing password will generate a new API key`} description={<Trans>Changing password will generate a new API key</Trans>}
{...form.getInputProps("newPassword")} {...form.getInputProps("newPassword")}
/> />
<PasswordInput label={t`Confirm password`} {...form.getInputProps("newPasswordConfirmation")} /> <PasswordInput label={<Trans>Confirm password</Trans>} {...form.getInputProps("newPasswordConfirmation")} />
<TextInput label={t`API key`} readOnly value={profile?.apiKey} /> <Checkbox label={<Trans>Generate new API key</Trans>} {...form.getInputProps("newApiKey", { type: "checkbox" })} />
<Checkbox label={t`Generate new API key`} {...form.getInputProps("newApiKey", { type: "checkbox" })} />
<Group> <Group>
<Button variant="default" onClick={() => dispatch(redirectToSelectedSource())}> <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 { Box, Stack } from "@mantine/core"
import { Constants } from "app/constants" import { Constants } from "app/constants"
import { import {
@@ -27,6 +27,7 @@ const expandedIcon = <TbChevronDown size={16} />
const collapsedIcon = <TbChevronRight size={16} /> const collapsedIcon = <TbChevronRight size={16} />
const errorThreshold = 9 const errorThreshold = 9
export function Tree() { export function Tree() {
const root = useAppSelector(state => state.tree.rootCategory) const root = useAppSelector(state => state.tree.rootCategory)
const source = useAppSelector(state => state.entries.source) const source = useAppSelector(state => state.entries.source)
@@ -63,7 +64,7 @@ export function Tree() {
const allCategoryNode = () => ( const allCategoryNode = () => (
<TreeNode <TreeNode
id={Constants.categories.all.id} id={Constants.categories.all.id}
name={t`All`} name={<Trans>All</Trans>}
icon={allIcon} icon={allIcon}
unread={categoryUnreadCount(root)} unread={categoryUnreadCount(root)}
selected={source.type === "category" && source.id === Constants.categories.all.id} selected={source.type === "category" && source.id === Constants.categories.all.id}
@@ -76,7 +77,7 @@ export function Tree() {
const starredCategoryNode = () => ( const starredCategoryNode = () => (
<TreeNode <TreeNode
id={Constants.categories.starred.id} id={Constants.categories.starred.id}
name={t`Starred`} name={<Trans>Starred</Trans>}
icon={starredIcon} icon={starredIcon}
unread={0} unread={0}
selected={source.type === "category" && source.id === Constants.categories.starred.id} selected={source.type === "category" && source.id === Constants.categories.starred.id}

View File

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

View File

@@ -1,4 +1,4 @@
import { t } from "@lingui/macro" import { t, Trans } from "@lingui/macro"
import { Box, Center, Kbd, TextInput } from "@mantine/core" import { Box, Center, Kbd, TextInput } from "@mantine/core"
import { openSpotlight, SpotlightAction, SpotlightProvider } from "@mantine/spotlight" import { openSpotlight, SpotlightAction, SpotlightProvider } from "@mantine/spotlight"
import { redirectToFeed } from "app/slices/redirect" import { redirectToFeed } from "app/slices/redirect"
@@ -11,6 +11,7 @@ import { TbSearch } from "react-icons/tb"
export interface TreeSearchProps { export interface TreeSearchProps {
feeds: Subscription[] feeds: Subscription[]
} }
export function TreeSearch(props: TreeSearchProps) { export function TreeSearch(props: TreeSearchProps) {
const dispatch = useAppDispatch() const dispatch = useAppDispatch()
@@ -40,7 +41,7 @@ export function TreeSearch(props: TreeSearchProps) {
searchIcon={searchIcon} searchIcon={searchIcon}
searchPlaceholder={t`Search`} searchPlaceholder={t`Search`}
shortcut="ctrl+k" shortcut="ctrl+k"
nothingFoundMessage={t`Nothing found`} nothingFoundMessage={<Trans>Nothing found</Trans>}
> >
<TextInput <TextInput
placeholder={t`Search`} placeholder={t`Search`}

View File

@@ -0,0 +1,9 @@
import { useMantineTheme } from "@mantine/core"
import { useMobile } from "hooks/useMobile"
export const useActionButton = () => {
const theme = useMantineTheme()
const mobile = useMobile(theme.breakpoints.xl)
const spacing = mobile ? 14 : 0
return { mobile, spacing }
}

View File

@@ -0,0 +1,64 @@
import { useEffect, useState } from "react"
export const useBrowserExtension = () => {
// the extension will set the "browser-extension-installed" attribute on the root element
const [browserExtensionVersion, setBrowserExtensionVersion] = useState(
document.documentElement.getAttribute("browser-extension-installed")
)
// monitor the attribute on the root element as it may change after the page was loaded
useEffect(() => {
const observer = new MutationObserver(mutations => {
mutations.forEach(mutation => {
if (mutation.type === "attributes") {
const element = mutation.target as Element
const version = element.getAttribute("browser-extension-installed")
if (version) setBrowserExtensionVersion(version)
}
})
})
observer.observe(document.documentElement, {
attributes: true,
})
return () => observer.disconnect()
}, [])
// when not in an iframe, window.parent is a reference to window
const isBrowserExtensionPopup = window.parent !== window
const isBrowserExtensionInstalled = isBrowserExtensionPopup || !!browserExtensionVersion
const isBrowserExtensionInstallable = !isBrowserExtensionPopup
const w = isBrowserExtensionPopup ? window.parent : window
const openSettingsPage = () => w.postMessage("open-settings-page", "*")
const openAppInNewTab = () => w.postMessage("open-app-in-new-tab", "*")
const openLinkInBackgroundTab = (url: string) => {
if (isBrowserExtensionInstalled) {
w.postMessage(`open-link-in-background-tab:${url}`, "*")
} else {
// fallback to ctrl+click simulation
const a = document.createElement("a")
a.href = url
a.rel = "noreferrer"
a.dispatchEvent(
new MouseEvent("click", {
ctrlKey: true,
metaKey: true,
})
)
}
}
const setBadgeUnreadCount = (count: number) => w.postMessage(`set-badge-unread-count:${count}`, "*")
return {
browserExtensionVersion,
isBrowserExtensionInstallable,
isBrowserExtensionInstalled,
isBrowserExtensionPopup,
openSettingsPage,
openAppInNewTab,
openLinkInBackgroundTab,
setBadgeUnreadCount,
}
}

View File

@@ -0,0 +1,4 @@
import { useMediaQuery } from "@mantine/hooks"
import { Constants } from "app/constants"
export const useMobile = (breakpoint: string = Constants.layout.mobileBreakpoint) => !useMediaQuery(`(min-width: ${breakpoint})`)

View File

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

View File

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

View File

@@ -13,6 +13,14 @@ msgstr ""
"Language-Team: \n" "Language-Team: \n"
"Plural-Forms: \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 #: src/pages/app/FeedDetailsPage.tsx
msgid "<0>Complete syntax is available </0><1>here</1>." msgid "<0>Complete syntax is available </0><1>here</1>."
msgstr "" msgstr ""
@@ -21,14 +29,14 @@ msgstr ""
msgid "<0>Have an account?</0><1>Log in!</1>" msgid "<0>Have an account?</0><1>Log in!</1>"
msgstr "<0> هل لديك حساب؟ </0> <1> تسجيل الدخول! </ 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 #: src/pages/auth/LoginPage.tsx
msgid "<0>Need an account?</0><1>Sign up!</1>" msgid "<0>Need an account?</0><1>Sign up!</1>"
msgstr "<0> هل تحتاج إلى حساب؟ </0> <1> اشترك! </ 1>" msgstr "<0> هل تحتاج إلى حساب؟ </0> <1> اشترك! </ 1>"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "مفتاح API"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "About" msgid "About"
@@ -63,6 +71,10 @@ msgstr "إداري"
msgid "All" msgid "All"
msgstr "الكل" msgstr "الكل"
#: src/components/settings/DisplaySettings.tsx
msgid "Always scroll selected entry to the top of the page, even if it fits entirely on screen"
msgstr ""
#: src/pages/auth/PasswordRecoveryPage.tsx #: src/pages/auth/PasswordRecoveryPage.tsx
msgid "An email has been sent if this address was registered. Check your inbox." msgid "An email has been sent if this address was registered. Check your inbox."
msgstr "تم إرسال بريد إلكتروني إذا تم تسجيل هذا العنوان. " msgstr "تم إرسال بريد إلكتروني إذا تم تسجيل هذا العنوان. "
@@ -75,6 +87,10 @@ msgstr "ملف opml هو ملف XML يحتوي على عناوين URL للتغ
msgid "Analyze feed" msgid "Analyze feed"
msgstr "تحليل التغذية" msgstr "تحليل التغذية"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "مفتاح API"
#: src/pages/app/CategoryDetailsPage.tsx #: src/pages/app/CategoryDetailsPage.tsx
msgid "Are you sure you want to delete category <0>{categoryName}</0>?" msgid "Are you sure you want to delete category <0>{categoryName}</0>?"
msgstr "هل أنت متأكد أنك تريد حذف الفئة <0> {categoryName} </0>؟" msgstr "هل أنت متأكد أنك تريد حذف الفئة <0> {categoryName} </0>؟"
@@ -115,14 +131,19 @@ msgstr "العودة"
msgid "Back to log in" msgid "Back to log in"
msgstr "العودة لتسجيل الدخول" msgstr "العودة لتسجيل الدخول"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required for Chrome"
msgstr ""
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "Browser extentions" msgid "Browser extention"
msgstr "ملحقات المستعرض" msgstr ""
#: src/components/admin/UserEdit.tsx #: src/components/admin/UserEdit.tsx
#: src/components/content/add/AddCategory.tsx #: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx #: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx #: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx #: src/pages/admin/AdminUsersPage.tsx
@@ -151,16 +172,16 @@ msgid "Check that the feed is working"
msgstr "تأكد من عمل الخلاصة" msgstr "تأكد من عمل الخلاصة"
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>." msgid "CommaFeed browser extension version {browserExtensionVersion}."
msgstr "CommaFeed هو مشروع مفتوح المصدر. " msgstr ""
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item" msgid "CommaFeed next unread item"
msgstr "CommaFeed التالي العنصر غير المقروء" msgstr "CommaFeed التالي العنصر غير المقروء"
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed version {version} ({revision})" msgid "CommaFeed version {version} ({revision})."
msgstr "إصدار CommaFeed {الإصدار} ({مراجعة})" msgstr ""
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Compact" msgid "Compact"
@@ -194,6 +215,18 @@ msgstr "السيطرة"
msgid "Current password" msgid "Current password"
msgstr "كلمة المرور الحالية" 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 #: src/pages/admin/AdminUsersPage.tsx
msgid "Date created" msgid "Date created"
msgstr "تاريخ الإنشاء" msgstr "تاريخ الإنشاء"
@@ -202,15 +235,15 @@ msgstr "تاريخ الإنشاء"
msgid "Delete" msgid "Delete"
msgstr "حذف" msgstr "حذف"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "حذف الفئة"
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
msgid "Delete account" msgid "Delete account"
msgstr "حذف الحساب" msgstr "حذف الحساب"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "حذف الفئة"
#: src/pages/admin/AdminUsersPage.tsx #: src/pages/admin/AdminUsersPage.tsx
msgid "Delete user" msgid "Delete user"
msgstr "حذف المستخدم" msgstr "حذف المستخدم"
@@ -228,6 +261,11 @@ msgstr ""
msgid "Display" msgid "Display"
msgstr "عرض" msgstr "عرض"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/DonatePage.tsx
msgid "Donate"
msgstr ""
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
msgid "Download" msgid "Download"
msgstr "تنزيل" msgstr "تنزيل"
@@ -282,28 +320,33 @@ msgstr "موسع"
msgid "Export your subscriptions and categories as an OPML file that can be imported in other feed reading services" msgid "Export your subscriptions and categories as an OPML file that can be imported in other feed reading services"
msgstr "قم بتصدير اشتراكاتك وفئاتك كملف OPML يمكن استيراده في خدمات قراءة الأعلاف الأخرى" 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/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
msgid "Feed URL" msgid "Feed URL"
msgstr "موجز URL" msgstr "موجز URL"
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "اسم الخلاصة"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now" msgid "Fetch all my feeds now"
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "الملف مطلوب"
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
msgid "Filtering expression" msgid "Filtering expression"
msgstr "تصفية التعبير" msgstr "تصفية التعبير"
#: src/pages/app/AboutPage.tsx
msgid "For those of you who prefer bitcoin, here is the address: {bitcoinAddress}"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Forgot password?" msgid "Forgot password?"
msgstr "هل نسيت كلمة المرور؟" msgstr "هل نسيت كلمة المرور؟"
@@ -324,17 +367,17 @@ msgstr "إنشاء مفتاح API جديد"
msgid "Generated feed url" msgid "Generated feed url"
msgstr "رابط الخلاصة المولدة" msgstr "رابط الخلاصة المولدة"
#: src/pages/app/AboutPage.tsx #: src/components/content/FeedEntryContextMenu.tsx
msgid "Go to the API documentation." msgid "Go to {0}"
msgstr "انتقل إلى وثائق API." msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Go to the All view" msgid "Go to the All view"
msgstr "اذهب إلى طريقة العرض \"الكل\"" msgstr "اذهب إلى طريقة العرض \"الكل\""
#: src/components/content/FeedEntryContextMenu.tsx #: src/pages/app/AboutPage.tsx
msgid "Go to {0}" msgid "Go to the API documentation."
msgstr "" msgstr "انتقل إلى وثائق API."
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "Goodies" msgid "Goodies"
@@ -352,10 +395,6 @@ msgstr "إذا لم يكن فارغًا ، فسيتم تقييم التعبير
msgid "If you encounter an issue, please report it on the issues page of the GitHub project." msgid "If you encounter an issue, please report it on the issues page of the GitHub project."
msgstr "إذا واجهت مشكلة ، فالرجاء الإبلاغ عنها على صفحة مشكلات مشروع GitHub." 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 #: src/components/content/add/ImportOpml.tsx
msgid "Import" msgid "Import"
msgstr "استيراد" msgstr "استيراد"
@@ -491,6 +530,7 @@ msgid "Newest first"
msgstr "الأحدث أولاً" msgstr "الأحدث أولاً"
#: src/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
#: src/components/header/Header.tsx
msgid "Next" msgid "Next"
msgstr "التالي" msgstr "التالي"
@@ -510,19 +550,6 @@ msgstr "لا مزيد من الإدخالات"
msgid "Nothing found" msgid "Nothing found"
msgstr "لم يتم العثور على شيء" 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 #: src/pages/app/AboutPage.tsx
msgid "Oldest first" msgid "Oldest first"
msgstr "الأقدم أولا" msgstr "الأقدم أولا"
@@ -531,6 +558,10 @@ msgstr "الأقدم أولا"
msgid "Oops!" msgid "Oops!"
msgstr "اوووه!" msgstr "اوووه!"
#: src/components/header/Header.tsx
msgid "Open CommaFeed"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Open current entry in a new tab" msgid "Open current entry in a new tab"
msgstr "فتح الإدخال الحالي في علامة تبويب جديدة" msgstr "فتح الإدخال الحالي في علامة تبويب جديدة"
@@ -563,6 +594,19 @@ msgstr "فتح الإدخال السابق"
msgid "Open/close current entry" msgid "Open/close current entry"
msgstr "فتح / إغلاق الإدخال الحالي" 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 #: src/pages/app/AboutPage.tsx
msgid "Order" msgid "Order"
msgstr "طلب" msgstr "طلب"
@@ -596,14 +640,14 @@ msgstr "كلمات المرور غير متطابقة"
msgid "Position" msgid "Position"
msgstr "المنـصب" msgstr "المنـصب"
#: src/components/header/Header.tsx
msgid "Previous"
msgstr ""
#: src/pages/app/SettingsPage.tsx #: src/pages/app/SettingsPage.tsx
msgid "Profile" msgid "Profile"
msgstr "الملف الشخصي" msgstr "الملف الشخصي"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/pages/auth/PasswordRecoveryPage.tsx #: src/pages/auth/PasswordRecoveryPage.tsx
msgid "Recover password" msgid "Recover password"
msgstr "استعادة كلمة السر" msgstr "استعادة كلمة السر"
@@ -617,11 +661,16 @@ msgstr "تحديث"
msgid "Registrations are closed on this CommaFeed instance" msgid "Registrations are closed on this CommaFeed instance"
msgstr "تم إغلاق التسجيلات في مثيل CommaFeed هذا" msgstr "تم إغلاق التسجيلات في مثيل CommaFeed هذا"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click" msgid "Right click"
msgstr "" msgstr ""
#: src/components/admin/UserEdit.tsx #: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx #: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
@@ -719,14 +768,14 @@ msgstr "مميز بنجمة"
msgid "Subscribe" msgid "Subscribe"
msgstr "اشتراك" msgstr "اشتراك"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "عنوان URL للاشتراك"
#: src/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
msgid "Subscribe to the feed" msgid "Subscribe to the feed"
msgstr "الاشتراك في موجز ويب" msgstr "الاشتراك في موجز ويب"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "عنوان URL للاشتراك"
#: src/components/Alert.tsx #: src/components/Alert.tsx
msgid "Success" msgid "Success"
msgstr "النجاح" msgstr "النجاح"
@@ -736,10 +785,12 @@ msgid "Swipe header to the right"
msgstr "" msgstr ""
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to dark theme" msgid "Switch to dark theme"
msgstr "التبديل إلى النسق الداكن" msgstr "التبديل إلى النسق الداكن"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to light theme" msgid "Switch to light theme"
msgstr "قم بالتبديل إلى النسق الفاتح" msgstr "قم بالتبديل إلى النسق الفاتح"
@@ -759,6 +810,10 @@ msgstr "الموضوع"
msgid "Toggle read status of current entry" msgid "Toggle read status of current entry"
msgstr "تبديل قراءة حالة الإدخال الحالي" msgstr "تبديل قراءة حالة الإدخال الحالي"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Toggle sidebar"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Try out CommaFeed with the demo account: demo/demo" msgid "Try out CommaFeed with the demo account: demo/demo"
msgstr "جرب CommaFeed باستخدام الحساب التجريبي: تجريبي / تجريبي" msgstr "جرب CommaFeed باستخدام الحساب التجريبي: تجريبي / تجريبي"
@@ -781,15 +836,15 @@ msgstr "إلغاء النجم"
msgid "Unsubscribe" msgid "Unsubscribe"
msgstr "إلغاء الاشتراك" msgstr "إلغاء الاشتراك"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "اسم المستخدم"
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "User Name or E-mail" msgid "User Name or E-mail"
msgstr "اسم المستخدم أو البريد الإلكتروني" msgstr "اسم المستخدم أو البريد الإلكتروني"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "اسم المستخدم"
#: src/components/Alert.tsx #: src/components/Alert.tsx
msgid "Warning" msgid "Warning"
msgstr "تحذير" msgstr "تحذير"
@@ -805,11 +860,3 @@ msgstr "ليس لديك أي اشتراكات حتى الآن. "
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh." msgid "Your feeds have been queued for refresh."
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "الملف مطلوب"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""

View File

@@ -13,6 +13,14 @@ msgstr ""
"Language-Team: \n" "Language-Team: \n"
"Plural-Forms: \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 #: src/pages/app/FeedDetailsPage.tsx
msgid "<0>Complete syntax is available </0><1>here</1>." msgid "<0>Complete syntax is available </0><1>here</1>."
msgstr "" msgstr ""
@@ -21,14 +29,14 @@ msgstr ""
msgid "<0>Have an account?</0><1>Log in!</1>" msgid "<0>Have an account?</0><1>Log in!</1>"
msgstr "<0>Teniu un compte?</0><1>Inicieu la sessió!</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 #: src/pages/auth/LoginPage.tsx
msgid "<0>Need an account?</0><1>Sign up!</1>" msgid "<0>Need an account?</0><1>Sign up!</1>"
msgstr "<0>Necessites un compte?</0><1>Registreu-vos!</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/components/header/ProfileMenu.tsx
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "About" msgid "About"
@@ -63,6 +71,10 @@ msgstr "Administrador"
msgid "All" msgid "All"
msgstr "Tot" msgstr "Tot"
#: src/components/settings/DisplaySettings.tsx
msgid "Always scroll selected entry to the top of the page, even if it fits entirely on screen"
msgstr ""
#: src/pages/auth/PasswordRecoveryPage.tsx #: src/pages/auth/PasswordRecoveryPage.tsx
msgid "An email has been sent if this address was registered. Check your inbox." msgid "An email has been sent if this address was registered. Check your inbox."
msgstr "S'ha enviat un correu electrònic si aquesta adreça estava registrada. " msgstr "S'ha enviat un correu electrònic si aquesta adreça estava registrada. "
@@ -75,6 +87,10 @@ msgstr "Un fitxer opml és un fitxer XML que conté URL i categories de canals.
msgid "Analyze feed" msgid "Analyze feed"
msgstr "Analitzar el feed" msgstr "Analitzar el feed"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "clau API"
#: src/pages/app/CategoryDetailsPage.tsx #: src/pages/app/CategoryDetailsPage.tsx
msgid "Are you sure you want to delete category <0>{categoryName}</0>?" msgid "Are you sure you want to delete category <0>{categoryName}</0>?"
msgstr "Estàs segur que vols suprimir la categoria <0>{categoryName}</0>?" msgstr "Estàs segur que vols suprimir la categoria <0>{categoryName}</0>?"
@@ -115,14 +131,19 @@ msgstr "Enrere"
msgid "Back to log in" msgid "Back to log in"
msgstr "Tornar a iniciar sessió" msgstr "Tornar a iniciar sessió"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required for Chrome"
msgstr ""
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "Browser extentions" msgid "Browser extention"
msgstr "Extensions del navegador" msgstr ""
#: src/components/admin/UserEdit.tsx #: src/components/admin/UserEdit.tsx
#: src/components/content/add/AddCategory.tsx #: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx #: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx #: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx #: src/pages/admin/AdminUsersPage.tsx
@@ -151,16 +172,16 @@ msgid "Check that the feed is working"
msgstr "Comproveu que el canal funciona" msgstr "Comproveu que el canal funciona"
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>." msgid "CommaFeed browser extension version {browserExtensionVersion}."
msgstr "CommaFeed és un projecte de codi obert. " msgstr ""
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item" msgid "CommaFeed next unread item"
msgstr "CommaFeed següent element no llegit" msgstr "CommaFeed següent element no llegit"
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed version {version} ({revision})" msgid "CommaFeed version {version} ({revision})."
msgstr "Versió CommaFeed {versió} ({revisió})" msgstr ""
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Compact" msgid "Compact"
@@ -194,6 +215,18 @@ msgstr ""
msgid "Current password" msgid "Current password"
msgstr "Contrasenya actual" 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 #: src/pages/admin/AdminUsersPage.tsx
msgid "Date created" msgid "Date created"
msgstr "Data de creació" msgstr "Data de creació"
@@ -202,15 +235,15 @@ msgstr "Data de creació"
msgid "Delete" msgid "Delete"
msgstr "Eliminar" msgstr "Eliminar"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Suprimeix la categoria"
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
msgid "Delete account" msgid "Delete account"
msgstr "Suprimeix el compte" msgstr "Suprimeix el compte"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Suprimeix la categoria"
#: src/pages/admin/AdminUsersPage.tsx #: src/pages/admin/AdminUsersPage.tsx
msgid "Delete user" msgid "Delete user"
msgstr "Suprimeix l'usuari" msgstr "Suprimeix l'usuari"
@@ -228,6 +261,11 @@ msgstr ""
msgid "Display" msgid "Display"
msgstr "Mostra" msgstr "Mostra"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/DonatePage.tsx
msgid "Donate"
msgstr ""
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
msgid "Download" msgid "Download"
msgstr "Descarrega" msgstr "Descarrega"
@@ -282,28 +320,33 @@ msgstr "Ampliat"
msgid "Export your subscriptions and categories as an OPML file that can be imported in other feed reading services" 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" 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/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
msgid "Feed URL" msgid "Feed URL"
msgstr "URL del canal" msgstr "URL del canal"
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "Nom del canal"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now" msgid "Fetch all my feeds now"
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "el fitxer és necessari"
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
msgid "Filtering expression" msgid "Filtering expression"
msgstr "Expressió de filtratge" msgstr "Expressió de filtratge"
#: src/pages/app/AboutPage.tsx
msgid "For those of you who prefer bitcoin, here is the address: {bitcoinAddress}"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Forgot password?" msgid "Forgot password?"
msgstr "Heu oblidat la contrasenya?" msgstr "Heu oblidat la contrasenya?"
@@ -324,17 +367,17 @@ msgstr "Genera una nova clau d'API"
msgid "Generated feed url" msgid "Generated feed url"
msgstr "URL del feed generat" msgstr "URL del feed generat"
#: src/pages/app/AboutPage.tsx #: src/components/content/FeedEntryContextMenu.tsx
msgid "Go to the API documentation." msgid "Go to {0}"
msgstr "Vés a la documentació de l'API." msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Go to the All view" msgid "Go to the All view"
msgstr "Vés a la vista Tot" msgstr "Vés a la vista Tot"
#: src/components/content/FeedEntryContextMenu.tsx #: src/pages/app/AboutPage.tsx
msgid "Go to {0}" msgid "Go to the API documentation."
msgstr "" msgstr "Vés a la documentació de l'API."
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "Goodies" msgid "Goodies"
@@ -352,10 +395,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." 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." 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 #: src/components/content/add/ImportOpml.tsx
msgid "Import" msgid "Import"
msgstr "Importació" msgstr "Importació"
@@ -491,6 +530,7 @@ msgid "Newest first"
msgstr "El més nou primer" msgstr "El més nou primer"
#: src/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
#: src/components/header/Header.tsx
msgid "Next" msgid "Next"
msgstr "Següent" msgstr "Següent"
@@ -510,19 +550,6 @@ msgstr "No hi ha més entrades"
msgid "Nothing found" msgid "Nothing found"
msgstr "No s'ha trobat res" 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 #: src/pages/app/AboutPage.tsx
msgid "Oldest first" msgid "Oldest first"
msgstr "el més vell primer" msgstr "el més vell primer"
@@ -531,6 +558,10 @@ msgstr "el més vell primer"
msgid "Oops!" msgid "Oops!"
msgstr "Vaja!" msgstr "Vaja!"
#: src/components/header/Header.tsx
msgid "Open CommaFeed"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Open current entry in a new tab" msgid "Open current entry in a new tab"
msgstr "Obre l'entrada actual en una pestanya nova" msgstr "Obre l'entrada actual en una pestanya nova"
@@ -563,6 +594,19 @@ msgstr "Obre l'entrada anterior"
msgid "Open/close current entry" msgid "Open/close current entry"
msgstr "Obrir/tancar l'entrada actual" 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 #: src/pages/app/AboutPage.tsx
msgid "Order" msgid "Order"
msgstr "Ordre" msgstr "Ordre"
@@ -596,14 +640,14 @@ msgstr "Les contrasenyes no coincideixen"
msgid "Position" msgid "Position"
msgstr "Posició" msgstr "Posició"
#: src/components/header/Header.tsx
msgid "Previous"
msgstr ""
#: src/pages/app/SettingsPage.tsx #: src/pages/app/SettingsPage.tsx
msgid "Profile" msgid "Profile"
msgstr "Perfil" msgstr "Perfil"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr "API REST"
#: src/pages/auth/PasswordRecoveryPage.tsx #: src/pages/auth/PasswordRecoveryPage.tsx
msgid "Recover password" msgid "Recover password"
msgstr "Recuperar la contrasenya" msgstr "Recuperar la contrasenya"
@@ -617,11 +661,16 @@ msgstr "Actualitzar"
msgid "Registrations are closed on this CommaFeed instance" msgid "Registrations are closed on this CommaFeed instance"
msgstr "Els registres estan tancats en aquesta instància de CommaFeed" msgstr "Els registres estan tancats en aquesta instància de CommaFeed"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr "API REST"
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click" msgid "Right click"
msgstr "" msgstr ""
#: src/components/admin/UserEdit.tsx #: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx #: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
@@ -719,14 +768,14 @@ msgstr "Estrellat"
msgid "Subscribe" msgid "Subscribe"
msgstr "Subscriu-te" msgstr "Subscriu-te"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "URL de subscripció"
#: src/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
msgid "Subscribe to the feed" msgid "Subscribe to the feed"
msgstr "Subscriu-te al canal" msgstr "Subscriu-te al canal"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "URL de subscripció"
#: src/components/Alert.tsx #: src/components/Alert.tsx
msgid "Success" msgid "Success"
msgstr "Éxit" msgstr "Éxit"
@@ -736,10 +785,12 @@ msgid "Swipe header to the right"
msgstr "" msgstr ""
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to dark theme" msgid "Switch to dark theme"
msgstr "Canvia al tema fosc" msgstr "Canvia al tema fosc"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to light theme" msgid "Switch to light theme"
msgstr "Canvia al tema clar" msgstr "Canvia al tema clar"
@@ -759,6 +810,10 @@ msgstr "Tema"
msgid "Toggle read status of current entry" msgid "Toggle read status of current entry"
msgstr "Canvia l'estat de lectura de l'entrada actual" msgstr "Canvia l'estat de lectura de l'entrada actual"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Toggle sidebar"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Try out CommaFeed with the demo account: demo/demo" msgid "Try out CommaFeed with the demo account: demo/demo"
msgstr "Proveu CommaFeed amb el compte de demostració: demo/demo" msgstr "Proveu CommaFeed amb el compte de demostració: demo/demo"
@@ -781,15 +836,15 @@ msgstr "Desestrellar"
msgid "Unsubscribe" msgid "Unsubscribe"
msgstr "Donar-se de baixa" 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
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "User Name or E-mail" msgid "User Name or E-mail"
msgstr "Nom d'usuari o correu electrònic" msgstr "Nom d'usuari o correu electrònic"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Nom d'usuari"
#: src/components/Alert.tsx #: src/components/Alert.tsx
msgid "Warning" msgid "Warning"
msgstr "Avís" msgstr "Avís"
@@ -805,11 +860,3 @@ msgstr "Encara no teniu cap subscripció. "
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh." msgid "Your feeds have been queued for refresh."
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "el fitxer és necessari"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""

View File

@@ -13,6 +13,14 @@ msgstr ""
"Language-Team: \n" "Language-Team: \n"
"Plural-Forms: \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 #: src/pages/app/FeedDetailsPage.tsx
msgid "<0>Complete syntax is available </0><1>here</1>." msgid "<0>Complete syntax is available </0><1>here</1>."
msgstr "" msgstr ""
@@ -21,14 +29,14 @@ msgstr ""
msgid "<0>Have an account?</0><1>Log in!</1>" msgid "<0>Have an account?</0><1>Log in!</1>"
msgstr "<0>Máte účet?</0><1>Přihlaste se!</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 #: src/pages/auth/LoginPage.tsx
msgid "<0>Need an account?</0><1>Sign up!</1>" msgid "<0>Need an account?</0><1>Sign up!</1>"
msgstr "<0>Potřebujete účet?</0><1>Zaregistrujte se!</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/components/header/ProfileMenu.tsx
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "About" msgid "About"
@@ -63,6 +71,10 @@ msgstr "Správce"
msgid "All" msgid "All"
msgstr "Všechny" msgstr "Všechny"
#: src/components/settings/DisplaySettings.tsx
msgid "Always scroll selected entry to the top of the page, even if it fits entirely on screen"
msgstr ""
#: src/pages/auth/PasswordRecoveryPage.tsx #: src/pages/auth/PasswordRecoveryPage.tsx
msgid "An email has been sent if this address was registered. Check your inbox." msgid "An email has been sent if this address was registered. Check your inbox."
msgstr "Pokud byla tato adresa zaregistrována, byl odeslán e-mail. " msgstr "Pokud byla tato adresa zaregistrována, byl odeslán e-mail. "
@@ -75,6 +87,10 @@ msgstr "Soubor opml je soubor XML obsahující adresy URL a kategorie zdrojů. "
msgid "Analyze feed" msgid "Analyze feed"
msgstr "Analyzujte krmivo" msgstr "Analyzujte krmivo"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "Klíč API"
#: src/pages/app/CategoryDetailsPage.tsx #: src/pages/app/CategoryDetailsPage.tsx
msgid "Are you sure you want to delete category <0>{categoryName}</0>?" msgid "Are you sure you want to delete category <0>{categoryName}</0>?"
msgstr "Opravdu chcete smazat kategorii <0>{categoryName}</0>?" msgstr "Opravdu chcete smazat kategorii <0>{categoryName}</0>?"
@@ -115,14 +131,19 @@ msgstr "Zpět"
msgid "Back to log in" msgid "Back to log in"
msgstr "Zpět k přihlášení" msgstr "Zpět k přihlášení"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required for Chrome"
msgstr ""
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "Browser extentions" msgid "Browser extention"
msgstr "Rozšíření prohlížeče" msgstr ""
#: src/components/admin/UserEdit.tsx #: src/components/admin/UserEdit.tsx
#: src/components/content/add/AddCategory.tsx #: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx #: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx #: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx #: src/pages/admin/AdminUsersPage.tsx
@@ -151,16 +172,16 @@ msgid "Check that the feed is working"
msgstr "Zkontrolujte, zda zdroj funguje" msgstr "Zkontrolujte, zda zdroj funguje"
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>." msgid "CommaFeed browser extension version {browserExtensionVersion}."
msgstr "CommaFeed je projekt s otevřeným zdrojovým kódem. " msgstr ""
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item" msgid "CommaFeed next unread item"
msgstr "CommaFeed další nepřečtená položka" msgstr "CommaFeed další nepřečtená položka"
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed version {version} ({revision})" msgid "CommaFeed version {version} ({revision})."
msgstr "CommaFeed verze {version} ({revision})" msgstr ""
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Compact" msgid "Compact"
@@ -194,6 +215,18 @@ msgstr ""
msgid "Current password" msgid "Current password"
msgstr "Aktuální heslo" 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 #: src/pages/admin/AdminUsersPage.tsx
msgid "Date created" msgid "Date created"
msgstr "Datum vytvoření" msgstr "Datum vytvoření"
@@ -202,15 +235,15 @@ msgstr "Datum vytvoření"
msgid "Delete" msgid "Delete"
msgstr "Smazat" msgstr "Smazat"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Odstranit kategorii"
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
msgid "Delete account" msgid "Delete account"
msgstr "Smazat účet" msgstr "Smazat účet"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Odstranit kategorii"
#: src/pages/admin/AdminUsersPage.tsx #: src/pages/admin/AdminUsersPage.tsx
msgid "Delete user" msgid "Delete user"
msgstr "Smazat uživatele" msgstr "Smazat uživatele"
@@ -228,6 +261,11 @@ msgstr ""
msgid "Display" msgid "Display"
msgstr "Displej" msgstr "Displej"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/DonatePage.tsx
msgid "Donate"
msgstr ""
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
msgid "Download" msgid "Download"
msgstr "Stáhnout" msgstr "Stáhnout"
@@ -282,28 +320,33 @@ msgstr "Rozbaleno"
msgid "Export your subscriptions and categories as an OPML file that can be imported in other feed reading services" 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ů" 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/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
msgid "Feed URL" msgid "Feed URL"
msgstr "URL zdroje" msgstr "URL zdroje"
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "Název zdroje"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now" msgid "Fetch all my feeds now"
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr ""
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
msgid "Filtering expression" msgid "Filtering expression"
msgstr "Filtrování výrazu" msgstr "Filtrování výrazu"
#: src/pages/app/AboutPage.tsx
msgid "For those of you who prefer bitcoin, here is the address: {bitcoinAddress}"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Forgot password?" msgid "Forgot password?"
msgstr "Zapomněli jste heslo?" msgstr "Zapomněli jste heslo?"
@@ -324,17 +367,17 @@ msgstr "Vygenerujte nový klíč API"
msgid "Generated feed url" msgid "Generated feed url"
msgstr "Generovaná adresa URL zdroje" msgstr "Generovaná adresa URL zdroje"
#: src/pages/app/AboutPage.tsx #: src/components/content/FeedEntryContextMenu.tsx
msgid "Go to the API documentation." msgid "Go to {0}"
msgstr "Přejděte na dokumentaci API." msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Go to the All view" msgid "Go to the All view"
msgstr "Přejděte do zobrazení Vše" msgstr "Přejděte do zobrazení Vše"
#: src/components/content/FeedEntryContextMenu.tsx #: src/pages/app/AboutPage.tsx
msgid "Go to {0}" msgid "Go to the API documentation."
msgstr "" msgstr "Přejděte na dokumentaci API."
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "Goodies" msgid "Goodies"
@@ -352,10 +395,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." 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." 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 #: src/components/content/add/ImportOpml.tsx
msgid "Import" msgid "Import"
msgstr "" msgstr ""
@@ -491,6 +530,7 @@ msgid "Newest first"
msgstr "Nejnovější jako první" msgstr "Nejnovější jako první"
#: src/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
#: src/components/header/Header.tsx
msgid "Next" msgid "Next"
msgstr "Další" msgstr "Další"
@@ -510,19 +550,6 @@ msgstr "Žádné další záznamy"
msgid "Nothing found" msgid "Nothing found"
msgstr "Nic nebylo nalezeno" 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 #: src/pages/app/AboutPage.tsx
msgid "Oldest first" msgid "Oldest first"
msgstr "Nejdříve nejstarší" msgstr "Nejdříve nejstarší"
@@ -531,6 +558,10 @@ msgstr "Nejdříve nejstarší"
msgid "Oops!" msgid "Oops!"
msgstr "Jejda!" msgstr "Jejda!"
#: src/components/header/Header.tsx
msgid "Open CommaFeed"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Open current entry in a new tab" msgid "Open current entry in a new tab"
msgstr "Otevřete aktuální položku na nové kartě" msgstr "Otevřete aktuální položku na nové kartě"
@@ -563,6 +594,19 @@ msgstr "Otevřít předchozí záznam"
msgid "Open/close current entry" msgid "Open/close current entry"
msgstr "Otevřít/zavřít aktuální položku" 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 #: src/pages/app/AboutPage.tsx
msgid "Order" msgid "Order"
msgstr "Objednávka" msgstr "Objednávka"
@@ -596,14 +640,14 @@ msgstr "Hesla se neshodují"
msgid "Position" msgid "Position"
msgstr "Pozice" msgstr "Pozice"
#: src/components/header/Header.tsx
msgid "Previous"
msgstr ""
#: src/pages/app/SettingsPage.tsx #: src/pages/app/SettingsPage.tsx
msgid "Profile" msgid "Profile"
msgstr "Profil" msgstr "Profil"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/pages/auth/PasswordRecoveryPage.tsx #: src/pages/auth/PasswordRecoveryPage.tsx
msgid "Recover password" msgid "Recover password"
msgstr "Obnovte heslo" msgstr "Obnovte heslo"
@@ -617,11 +661,16 @@ msgstr "Obnovit"
msgid "Registrations are closed on this CommaFeed instance" msgid "Registrations are closed on this CommaFeed instance"
msgstr "V této instanci CommaFeed jsou registrace uzavřeny" msgstr "V této instanci CommaFeed jsou registrace uzavřeny"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click" msgid "Right click"
msgstr "" msgstr ""
#: src/components/admin/UserEdit.tsx #: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx #: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
@@ -719,14 +768,14 @@ msgstr "S hvězdičkou"
msgid "Subscribe" msgid "Subscribe"
msgstr "Přihlaste se" msgstr "Přihlaste se"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "URL pro přihlášení"
#: src/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
msgid "Subscribe to the feed" msgid "Subscribe to the feed"
msgstr "Přihlaste se k odběru kanálu" 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 #: src/components/Alert.tsx
msgid "Success" msgid "Success"
msgstr "Úspěch" msgstr "Úspěch"
@@ -736,10 +785,12 @@ msgid "Swipe header to the right"
msgstr "" msgstr ""
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to dark theme" msgid "Switch to dark theme"
msgstr "Přepněte na tmavý motiv" msgstr "Přepněte na tmavý motiv"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to light theme" msgid "Switch to light theme"
msgstr "Přepněte na světlé téma" msgstr "Přepněte na světlé téma"
@@ -759,6 +810,10 @@ msgstr "Téma"
msgid "Toggle read status of current entry" msgid "Toggle read status of current entry"
msgstr "Přepne stav čtení aktuálního záznamu" msgstr "Přepne stav čtení aktuálního záznamu"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Toggle sidebar"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Try out CommaFeed with the demo account: demo/demo" msgid "Try out CommaFeed with the demo account: demo/demo"
msgstr "Vyzkoušejte CommaFeed s demo účtem: demo/demo" msgstr "Vyzkoušejte CommaFeed s demo účtem: demo/demo"
@@ -781,15 +836,15 @@ msgstr "Odstranit hvězdu"
msgid "Unsubscribe" msgid "Unsubscribe"
msgstr "Odhlásit odběr" 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
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "User Name or E-mail" msgid "User Name or E-mail"
msgstr "Uživatelské jméno nebo 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 #: src/components/Alert.tsx
msgid "Warning" msgid "Warning"
msgstr "Varování" msgstr "Varování"
@@ -805,11 +860,3 @@ msgstr "Zatím nemáte žádné předplatné. "
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh." msgid "Your feeds have been queued for refresh."
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr ""
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""

View File

@@ -13,6 +13,14 @@ msgstr ""
"Language-Team: \n" "Language-Team: \n"
"Plural-Forms: \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 #: src/pages/app/FeedDetailsPage.tsx
msgid "<0>Complete syntax is available </0><1>here</1>." msgid "<0>Complete syntax is available </0><1>here</1>."
msgstr "" msgstr ""
@@ -21,14 +29,14 @@ msgstr ""
msgid "<0>Have an account?</0><1>Log in!</1>" msgid "<0>Have an account?</0><1>Log in!</1>"
msgstr "<0>A oes gennych gyfrif?</0><1>Mewngofnodi!</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 #: src/pages/auth/LoginPage.tsx
msgid "<0>Need an account?</0><1>Sign up!</1>" msgid "<0>Need an account?</0><1>Sign up!</1>"
msgstr "<0>Angen cyfrif?</0><1>Ymunwch!</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/components/header/ProfileMenu.tsx
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "About" msgid "About"
@@ -63,6 +71,10 @@ msgstr "Gweinyddol"
msgid "All" msgid "All"
msgstr "Pawb" msgstr "Pawb"
#: src/components/settings/DisplaySettings.tsx
msgid "Always scroll selected entry to the top of the page, even if it fits entirely on screen"
msgstr ""
#: src/pages/auth/PasswordRecoveryPage.tsx #: src/pages/auth/PasswordRecoveryPage.tsx
msgid "An email has been sent if this address was registered. Check your inbox." msgid "An email has been sent if this address was registered. Check your inbox."
msgstr "Mae e-bost wedi'i anfon os oedd y cyfeiriad hwn wedi'i gofrestru. " msgstr "Mae e-bost wedi'i anfon os oedd y cyfeiriad hwn wedi'i gofrestru. "
@@ -75,6 +87,10 @@ msgstr "Mae ffeil opml yn ffeil XML sy'n cynnwys URLs porthiant a chategorïau.
msgid "Analyze feed" msgid "Analyze feed"
msgstr "Dadansoddi porthiant" msgstr "Dadansoddi porthiant"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "Allwedd API"
#: src/pages/app/CategoryDetailsPage.tsx #: src/pages/app/CategoryDetailsPage.tsx
msgid "Are you sure you want to delete category <0>{categoryName}</0>?" 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>?" msgstr "Ydych chi'n siŵr eich bod am ddileu categori <0>{categoryName}</0>?"
@@ -115,14 +131,19 @@ msgstr "Yn ôl"
msgid "Back to log in" msgid "Back to log in"
msgstr "Yn ôl i fewngofnodi" msgstr "Yn ôl i fewngofnodi"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required for Chrome"
msgstr ""
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "Browser extentions" msgid "Browser extention"
msgstr "Estyniadau porwr" msgstr ""
#: src/components/admin/UserEdit.tsx #: src/components/admin/UserEdit.tsx
#: src/components/content/add/AddCategory.tsx #: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx #: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx #: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx #: src/pages/admin/AdminUsersPage.tsx
@@ -151,16 +172,16 @@ msgid "Check that the feed is working"
msgstr "Gwiriwch fod y porthiant yn gweithio" msgstr "Gwiriwch fod y porthiant yn gweithio"
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>." msgid "CommaFeed browser extension version {browserExtensionVersion}."
msgstr "Mae ComaFeed yn brosiect ffynhonnell agored. " msgstr ""
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item" msgid "CommaFeed next unread item"
msgstr "CommaFeed eitem nesaf heb ei darllen" msgstr "CommaFeed eitem nesaf heb ei darllen"
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed version {version} ({revision})" msgid "CommaFeed version {version} ({revision})."
msgstr "Fersiwn ComaFeed {fersiwn} ({ adolygu})" msgstr ""
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Compact" msgid "Compact"
@@ -194,6 +215,18 @@ msgstr ""
msgid "Current password" msgid "Current password"
msgstr "Cyfrinair presennol" 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 #: src/pages/admin/AdminUsersPage.tsx
msgid "Date created" msgid "Date created"
msgstr "Dyddiad creu" msgstr "Dyddiad creu"
@@ -202,15 +235,15 @@ msgstr "Dyddiad creu"
msgid "Delete" msgid "Delete"
msgstr "Dileu" msgstr "Dileu"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Dileu Categori"
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
msgid "Delete account" msgid "Delete account"
msgstr "Dileu cyfrif" msgstr "Dileu cyfrif"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Dileu Categori"
#: src/pages/admin/AdminUsersPage.tsx #: src/pages/admin/AdminUsersPage.tsx
msgid "Delete user" msgid "Delete user"
msgstr "Dileu defnyddiwr" msgstr "Dileu defnyddiwr"
@@ -228,6 +261,11 @@ msgstr ""
msgid "Display" msgid "Display"
msgstr "Arddangos" msgstr "Arddangos"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/DonatePage.tsx
msgid "Donate"
msgstr ""
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
msgid "Download" msgid "Download"
msgstr "Lawrlwytho" msgstr "Lawrlwytho"
@@ -282,28 +320,33 @@ msgstr "Ehangu"
msgid "Export your subscriptions and categories as an OPML file that can be imported in other feed reading services" 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" 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/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
msgid "Feed URL" msgid "Feed URL"
msgstr "URL porthiant" msgstr "URL porthiant"
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "Enw porthiant"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now" msgid "Fetch all my feeds now"
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "mae angen y ffeil"
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
msgid "Filtering expression" msgid "Filtering expression"
msgstr "Hidlo mynegiant" msgstr "Hidlo mynegiant"
#: src/pages/app/AboutPage.tsx
msgid "For those of you who prefer bitcoin, here is the address: {bitcoinAddress}"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Forgot password?" msgid "Forgot password?"
msgstr "Wedi anghofio cyfrinair?" msgstr "Wedi anghofio cyfrinair?"
@@ -324,17 +367,17 @@ msgstr "Cynhyrchu allwedd API newydd"
msgid "Generated feed url" msgid "Generated feed url"
msgstr "url porthiant a gynhyrchir" msgstr "url porthiant a gynhyrchir"
#: src/pages/app/AboutPage.tsx #: src/components/content/FeedEntryContextMenu.tsx
msgid "Go to the API documentation." msgid "Go to {0}"
msgstr "Ewch i'r ddogfennaeth API." msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Go to the All view" msgid "Go to the All view"
msgstr "Ewch i'r golwg Pawb" msgstr "Ewch i'r golwg Pawb"
#: src/components/content/FeedEntryContextMenu.tsx #: src/pages/app/AboutPage.tsx
msgid "Go to {0}" msgid "Go to the API documentation."
msgstr "" msgstr "Ewch i'r ddogfennaeth API."
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "Goodies" msgid "Goodies"
@@ -352,10 +395,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." 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." 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 #: src/components/content/add/ImportOpml.tsx
msgid "Import" msgid "Import"
msgstr "Mewnforio" msgstr "Mewnforio"
@@ -491,6 +530,7 @@ msgid "Newest first"
msgstr "Y diweddaraf yn gyntaf" msgstr "Y diweddaraf yn gyntaf"
#: src/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
#: src/components/header/Header.tsx
msgid "Next" msgid "Next"
msgstr "Nesaf" msgstr "Nesaf"
@@ -510,19 +550,6 @@ msgstr "Dim mwy o gofnodion"
msgid "Nothing found" msgid "Nothing found"
msgstr "Dim wedi'i ddarganfod" 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 #: src/pages/app/AboutPage.tsx
msgid "Oldest first" msgid "Oldest first"
msgstr "Hynaf yn gyntaf" msgstr "Hynaf yn gyntaf"
@@ -531,6 +558,10 @@ msgstr "Hynaf yn gyntaf"
msgid "Oops!" msgid "Oops!"
msgstr "Wps!" msgstr "Wps!"
#: src/components/header/Header.tsx
msgid "Open CommaFeed"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Open current entry in a new tab" msgid "Open current entry in a new tab"
msgstr "Agorwch y cofnod cyfredol mewn tab newydd" msgstr "Agorwch y cofnod cyfredol mewn tab newydd"
@@ -563,6 +594,19 @@ msgstr "Agor cofnod blaenorol"
msgid "Open/close current entry" msgid "Open/close current entry"
msgstr "Agor / cau'r cofnod cyfredol" 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 #: src/pages/app/AboutPage.tsx
msgid "Order" msgid "Order"
msgstr "gorchymyn" msgstr "gorchymyn"
@@ -596,14 +640,14 @@ msgstr "Nid yw cyfrineiriau yn cyfateb"
msgid "Position" msgid "Position"
msgstr "Swydd" msgstr "Swydd"
#: src/components/header/Header.tsx
msgid "Previous"
msgstr ""
#: src/pages/app/SettingsPage.tsx #: src/pages/app/SettingsPage.tsx
msgid "Profile" msgid "Profile"
msgstr "Proffil" msgstr "Proffil"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/pages/auth/PasswordRecoveryPage.tsx #: src/pages/auth/PasswordRecoveryPage.tsx
msgid "Recover password" msgid "Recover password"
msgstr "Adfer cyfrinair" msgstr "Adfer cyfrinair"
@@ -617,11 +661,16 @@ msgstr "Adnewyddu"
msgid "Registrations are closed on this CommaFeed instance" msgid "Registrations are closed on this CommaFeed instance"
msgstr "Mae cofrestriadau ar gau ar yr achos CommaFeed hwn" msgstr "Mae cofrestriadau ar gau ar yr achos CommaFeed hwn"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click" msgid "Right click"
msgstr "" msgstr ""
#: src/components/admin/UserEdit.tsx #: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx #: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
@@ -719,14 +768,14 @@ msgstr "serennog"
msgid "Subscribe" msgid "Subscribe"
msgstr "Tanysgrifio" msgstr "Tanysgrifio"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "Tanysgrifio URL"
#: src/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
msgid "Subscribe to the feed" msgid "Subscribe to the feed"
msgstr "Tanysgrifio i'r porthiant" msgstr "Tanysgrifio i'r porthiant"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "Tanysgrifio URL"
#: src/components/Alert.tsx #: src/components/Alert.tsx
msgid "Success" msgid "Success"
msgstr "Llwyddiant" msgstr "Llwyddiant"
@@ -736,10 +785,12 @@ msgid "Swipe header to the right"
msgstr "" msgstr ""
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to dark theme" msgid "Switch to dark theme"
msgstr "Newid i thema dywyll" msgstr "Newid i thema dywyll"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to light theme" msgid "Switch to light theme"
msgstr "Newid i thema golau" msgstr "Newid i thema golau"
@@ -759,6 +810,10 @@ msgstr "Thema"
msgid "Toggle read status of current entry" msgid "Toggle read status of current entry"
msgstr "Toglo statws darllen y cofnod cyfredol" msgstr "Toglo statws darllen y cofnod cyfredol"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Toggle sidebar"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Try out CommaFeed with the demo account: demo/demo" msgid "Try out CommaFeed with the demo account: demo/demo"
msgstr "Rhowch gynnig ar CommaFeed gyda'r cyfrif demo: demo / demo" msgstr "Rhowch gynnig ar CommaFeed gyda'r cyfrif demo: demo / demo"
@@ -781,15 +836,15 @@ msgstr "dad-seren"
msgid "Unsubscribe" msgid "Unsubscribe"
msgstr "Dad-danysgrifio" msgstr "Dad-danysgrifio"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Enw defnyddiwr"
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "User Name or E-mail" msgid "User Name or E-mail"
msgstr "Enw Defnyddiwr neu E-bost" msgstr "Enw Defnyddiwr neu E-bost"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Enw defnyddiwr"
#: src/components/Alert.tsx #: src/components/Alert.tsx
msgid "Warning" msgid "Warning"
msgstr "Rhybudd" msgstr "Rhybudd"
@@ -805,11 +860,3 @@ msgstr "Nid oes gennych unrhyw danysgrifiadau eto. "
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh." msgid "Your feeds have been queued for refresh."
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "mae angen y ffeil"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""

View File

@@ -13,6 +13,14 @@ msgstr ""
"Language-Team: \n" "Language-Team: \n"
"Plural-Forms: \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 #: src/pages/app/FeedDetailsPage.tsx
msgid "<0>Complete syntax is available </0><1>here</1>." msgid "<0>Complete syntax is available </0><1>here</1>."
msgstr "" msgstr ""
@@ -21,14 +29,14 @@ msgstr ""
msgid "<0>Have an account?</0><1>Log in!</1>" msgid "<0>Have an account?</0><1>Log in!</1>"
msgstr "<0>Har du en konto?</0><1>Log ind!</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 #: src/pages/auth/LoginPage.tsx
msgid "<0>Need an account?</0><1>Sign up!</1>" msgid "<0>Need an account?</0><1>Sign up!</1>"
msgstr "<0>Har du brug for en konto?</0><1>Tilmeld dig!</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/components/header/ProfileMenu.tsx
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "About" msgid "About"
@@ -63,6 +71,10 @@ msgstr ""
msgid "All" msgid "All"
msgstr "Alle" msgstr "Alle"
#: src/components/settings/DisplaySettings.tsx
msgid "Always scroll selected entry to the top of the page, even if it fits entirely on screen"
msgstr ""
#: src/pages/auth/PasswordRecoveryPage.tsx #: src/pages/auth/PasswordRecoveryPage.tsx
msgid "An email has been sent if this address was registered. Check your inbox." msgid "An email has been sent if this address was registered. Check your inbox."
msgstr "Der er sendt en e-mail, hvis denne adresse var registreret. " msgstr "Der er sendt en e-mail, hvis denne adresse var registreret. "
@@ -75,6 +87,10 @@ msgstr "En opml-fil er en XML-fil, der indeholder feed-URL'er og kategorier. "
msgid "Analyze feed" msgid "Analyze feed"
msgstr "Analyser foder" msgstr "Analyser foder"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "API-nøgle"
#: src/pages/app/CategoryDetailsPage.tsx #: src/pages/app/CategoryDetailsPage.tsx
msgid "Are you sure you want to delete category <0>{categoryName}</0>?" 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>?" msgstr "Er du sikker på, at du vil slette kategori <0>{categoryName}</0>?"
@@ -115,14 +131,19 @@ msgstr "Tilbage"
msgid "Back to log in" msgid "Back to log in"
msgstr "Tilbage for at logge ind" msgstr "Tilbage for at logge ind"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required for Chrome"
msgstr ""
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "Browser extentions" msgid "Browser extention"
msgstr "Browserudvidelser" msgstr ""
#: src/components/admin/UserEdit.tsx #: src/components/admin/UserEdit.tsx
#: src/components/content/add/AddCategory.tsx #: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx #: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx #: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx #: src/pages/admin/AdminUsersPage.tsx
@@ -151,15 +172,15 @@ msgid "Check that the feed is working"
msgstr "Tjek, at foderet virker" msgstr "Tjek, at foderet virker"
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>." msgid "CommaFeed browser extension version {browserExtensionVersion}."
msgstr "CommaFeed er et open source-projekt. " msgstr ""
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item" msgid "CommaFeed next unread item"
msgstr "CommaFeed næste ulæste element" msgstr "CommaFeed næste ulæste element"
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed version {version} ({revision})" msgid "CommaFeed version {version} ({revision})."
msgstr "" msgstr ""
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
@@ -194,6 +215,18 @@ msgstr ""
msgid "Current password" msgid "Current password"
msgstr "Nuværende adgangskode" 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 #: src/pages/admin/AdminUsersPage.tsx
msgid "Date created" msgid "Date created"
msgstr "Dato oprettet" msgstr "Dato oprettet"
@@ -202,15 +235,15 @@ msgstr "Dato oprettet"
msgid "Delete" msgid "Delete"
msgstr "Slet" msgstr "Slet"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Slet kategori"
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
msgid "Delete account" msgid "Delete account"
msgstr "Slet konto" msgstr "Slet konto"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Slet kategori"
#: src/pages/admin/AdminUsersPage.tsx #: src/pages/admin/AdminUsersPage.tsx
msgid "Delete user" msgid "Delete user"
msgstr "Slet bruger" msgstr "Slet bruger"
@@ -228,6 +261,11 @@ msgstr ""
msgid "Display" msgid "Display"
msgstr "Skærm" msgstr "Skærm"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/DonatePage.tsx
msgid "Donate"
msgstr ""
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
msgid "Download" msgid "Download"
msgstr "" msgstr ""
@@ -282,28 +320,33 @@ msgstr "Udvidet"
msgid "Export your subscriptions and categories as an OPML file that can be imported in other feed reading services" 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" msgstr "Eksporter dine abonnementer og kategorier som en OPML-fil, der kan importeres i andre feed-læsningstjenester"
#: src/components/content/add/Subscribe.tsx #: src/components/header/Header.tsx
#: src/components/content/add/Subscribe.tsx #: src/pages/WelcomePage.tsx
#: src/pages/app/FeedDetailsPage.tsx msgid "Extension options"
msgid "Feed URL"
msgstr "" msgstr ""
#: src/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
msgid "Feed name" msgid "Feed name"
msgstr "Feednavn" 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/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now" msgid "Fetch all my feeds now"
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "fil er påkrævet"
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
msgid "Filtering expression" msgid "Filtering expression"
msgstr "Filtrerende udtryk" msgstr "Filtrerende udtryk"
#: src/pages/app/AboutPage.tsx
msgid "For those of you who prefer bitcoin, here is the address: {bitcoinAddress}"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Forgot password?" msgid "Forgot password?"
msgstr "Glemt adgangskode?" msgstr "Glemt adgangskode?"
@@ -324,17 +367,17 @@ msgstr "Generer ny API-nøgle"
msgid "Generated feed url" msgid "Generated feed url"
msgstr "Genereret feed-url" msgstr "Genereret feed-url"
#: src/pages/app/AboutPage.tsx #: src/components/content/FeedEntryContextMenu.tsx
msgid "Go to the API documentation." msgid "Go to {0}"
msgstr "Gå til API-dokumentationen." msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Go to the All view" msgid "Go to the All view"
msgstr "Gå til visningen Alle" msgstr "Gå til visningen Alle"
#: src/components/content/FeedEntryContextMenu.tsx #: src/pages/app/AboutPage.tsx
msgid "Go to {0}" msgid "Go to the API documentation."
msgstr "" msgstr "Gå til API-dokumentationen."
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "Goodies" msgid "Goodies"
@@ -352,10 +395,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." 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." 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 #: src/components/content/add/ImportOpml.tsx
msgid "Import" msgid "Import"
msgstr "" msgstr ""
@@ -491,6 +530,7 @@ msgid "Newest first"
msgstr "Nyeste først" msgstr "Nyeste først"
#: src/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
#: src/components/header/Header.tsx
msgid "Next" msgid "Next"
msgstr "Næste" msgstr "Næste"
@@ -510,19 +550,6 @@ msgstr "Ingen flere poster"
msgid "Nothing found" msgid "Nothing found"
msgstr "Intet fundet" 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 #: src/pages/app/AboutPage.tsx
msgid "Oldest first" msgid "Oldest first"
msgstr "Ældst først" msgstr "Ældst først"
@@ -531,6 +558,10 @@ msgstr "Ældst først"
msgid "Oops!" msgid "Oops!"
msgstr "Hovsa!" msgstr "Hovsa!"
#: src/components/header/Header.tsx
msgid "Open CommaFeed"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Open current entry in a new tab" msgid "Open current entry in a new tab"
msgstr "Åbn den aktuelle post i en ny fane" msgstr "Åbn den aktuelle post i en ny fane"
@@ -563,6 +594,19 @@ msgstr "Åbn forrige post"
msgid "Open/close current entry" msgid "Open/close current entry"
msgstr "Åbn/luk aktuel indgang" 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 #: src/pages/app/AboutPage.tsx
msgid "Order" msgid "Order"
msgstr "Bestilling" msgstr "Bestilling"
@@ -596,14 +640,14 @@ msgstr "Adgangskoder stemmer ikke overens"
msgid "Position" msgid "Position"
msgstr "" msgstr ""
#: src/components/header/Header.tsx
msgid "Previous"
msgstr ""
#: src/pages/app/SettingsPage.tsx #: src/pages/app/SettingsPage.tsx
msgid "Profile" msgid "Profile"
msgstr "Profil" msgstr "Profil"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/pages/auth/PasswordRecoveryPage.tsx #: src/pages/auth/PasswordRecoveryPage.tsx
msgid "Recover password" msgid "Recover password"
msgstr "Gendan adgangskode" msgstr "Gendan adgangskode"
@@ -617,11 +661,16 @@ msgstr "Opdater"
msgid "Registrations are closed on this CommaFeed instance" msgid "Registrations are closed on this CommaFeed instance"
msgstr "Registreringer er lukket på denne CommaFeed-instans" msgstr "Registreringer er lukket på denne CommaFeed-instans"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click" msgid "Right click"
msgstr "" msgstr ""
#: src/components/admin/UserEdit.tsx #: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx #: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
@@ -719,14 +768,14 @@ msgstr "Medvirkende"
msgid "Subscribe" msgid "Subscribe"
msgstr "Tilmeld" msgstr "Tilmeld"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr ""
#: src/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
msgid "Subscribe to the feed" msgid "Subscribe to the feed"
msgstr "Abonner på feedet" msgstr "Abonner på feedet"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr ""
#: src/components/Alert.tsx #: src/components/Alert.tsx
msgid "Success" msgid "Success"
msgstr "Succes" msgstr "Succes"
@@ -736,10 +785,12 @@ msgid "Swipe header to the right"
msgstr "" msgstr ""
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to dark theme" msgid "Switch to dark theme"
msgstr "Skift til mørkt tema" msgstr "Skift til mørkt tema"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to light theme" msgid "Switch to light theme"
msgstr "Skift til lystema" msgstr "Skift til lystema"
@@ -759,6 +810,10 @@ msgstr "Tema"
msgid "Toggle read status of current entry" msgid "Toggle read status of current entry"
msgstr "Skift læsestatus for den aktuelle post" msgstr "Skift læsestatus for den aktuelle post"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Toggle sidebar"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Try out CommaFeed with the demo account: demo/demo" msgid "Try out CommaFeed with the demo account: demo/demo"
msgstr "Prøv CommaFeed med demokontoen: demo/demo" msgstr "Prøv CommaFeed med demokontoen: demo/demo"
@@ -781,15 +836,15 @@ msgstr ""
msgid "Unsubscribe" msgid "Unsubscribe"
msgstr "Afmeld" msgstr "Afmeld"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Brugernavn"
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "User Name or E-mail" msgid "User Name or E-mail"
msgstr "Brugernavn eller e-mail" msgstr "Brugernavn eller e-mail"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Brugernavn"
#: src/components/Alert.tsx #: src/components/Alert.tsx
msgid "Warning" msgid "Warning"
msgstr "Advarsel" msgstr "Advarsel"
@@ -805,11 +860,3 @@ msgstr "Du har ingen abonnementer endnu. "
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh." msgid "Your feeds have been queued for refresh."
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "fil er påkrævet"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""

View File

@@ -13,6 +13,14 @@ msgstr ""
"Language-Team: \n" "Language-Team: \n"
"Plural-Forms: \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 #: src/pages/app/FeedDetailsPage.tsx
msgid "<0>Complete syntax is available </0><1>here</1>." msgid "<0>Complete syntax is available </0><1>here</1>."
msgstr "" msgstr ""
@@ -21,14 +29,14 @@ msgstr ""
msgid "<0>Have an account?</0><1>Log in!</1>" msgid "<0>Have an account?</0><1>Log in!</1>"
msgstr "<0>Haben Sie ein Konto?</0><1>Melden Sie sich an!</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 #: src/pages/auth/LoginPage.tsx
msgid "<0>Need an account?</0><1>Sign up!</1>" msgid "<0>Need an account?</0><1>Sign up!</1>"
msgstr "<0>Benötigen Sie ein Konto?</0><1>Melden Sie sich an!</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/components/header/ProfileMenu.tsx
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "About" msgid "About"
@@ -63,6 +71,10 @@ msgstr "Verwaltung"
msgid "All" msgid "All"
msgstr "Alle" msgstr "Alle"
#: src/components/settings/DisplaySettings.tsx
msgid "Always scroll selected entry to the top of the page, even if it fits entirely on screen"
msgstr ""
#: src/pages/auth/PasswordRecoveryPage.tsx #: src/pages/auth/PasswordRecoveryPage.tsx
msgid "An email has been sent if this address was registered. Check your inbox." msgid "An email has been sent if this address was registered. Check your inbox."
msgstr "Eine E-Mail wurde gesendet, wenn diese Adresse registriert wurde. " msgstr "Eine E-Mail wurde gesendet, wenn diese Adresse registriert wurde. "
@@ -75,6 +87,10 @@ msgstr "Eine opml-Datei ist eine XML-Datei, die Feed-URLs und Kategorien enthäl
msgid "Analyze feed" msgid "Analyze feed"
msgstr "Feed analysieren" msgstr "Feed analysieren"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "API-Schlüssel"
#: src/pages/app/CategoryDetailsPage.tsx #: src/pages/app/CategoryDetailsPage.tsx
msgid "Are you sure you want to delete category <0>{categoryName}</0>?" 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?" msgstr "Sind Sie sicher, dass Sie die Kategorie <0>{categoryName}</0> löschen möchten?"
@@ -115,14 +131,19 @@ msgstr "Zurück"
msgid "Back to log in" msgid "Back to log in"
msgstr "Zurück zum Anmelden" msgstr "Zurück zum Anmelden"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required for Chrome"
msgstr ""
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "Browser extentions" msgid "Browser extention"
msgstr "Browsererweiterungen" msgstr ""
#: src/components/admin/UserEdit.tsx #: src/components/admin/UserEdit.tsx
#: src/components/content/add/AddCategory.tsx #: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx #: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx #: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx #: src/pages/admin/AdminUsersPage.tsx
@@ -151,16 +172,16 @@ msgid "Check that the feed is working"
msgstr "Überprüfen Sie, ob der Feed funktioniert" msgstr "Überprüfen Sie, ob der Feed funktioniert"
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>." msgid "CommaFeed browser extension version {browserExtensionVersion}."
msgstr "CommaFeed ist ein Open-Source-Projekt. " msgstr ""
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item" msgid "CommaFeed next unread item"
msgstr "CommaFeed nächstes ungelesenes Element" msgstr "CommaFeed nächstes ungelesenes Element"
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed version {version} ({revision})" msgid "CommaFeed version {version} ({revision})."
msgstr "CommaFeed-Version {Version} ({Revision})" msgstr ""
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Compact" msgid "Compact"
@@ -194,6 +215,18 @@ msgstr "Strg"
msgid "Current password" msgid "Current password"
msgstr "Aktuelles Passwort" 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 #: src/pages/admin/AdminUsersPage.tsx
msgid "Date created" msgid "Date created"
msgstr "Erstellungsdatum" msgstr "Erstellungsdatum"
@@ -202,15 +235,15 @@ msgstr "Erstellungsdatum"
msgid "Delete" msgid "Delete"
msgstr "Löschen" 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
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
msgid "Delete account" msgid "Delete account"
msgstr "Konto löschen" msgstr "Konto löschen"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Kategorie löschen"
#: src/pages/admin/AdminUsersPage.tsx #: src/pages/admin/AdminUsersPage.tsx
msgid "Delete user" msgid "Delete user"
msgstr "Benutzer löschen" msgstr "Benutzer löschen"
@@ -228,6 +261,11 @@ msgstr ""
msgid "Display" msgid "Display"
msgstr "Anzeige" msgstr "Anzeige"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/DonatePage.tsx
msgid "Donate"
msgstr ""
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
msgid "Download" msgid "Download"
msgstr "Herunterladen" msgstr "Herunterladen"
@@ -282,28 +320,33 @@ msgstr "Erweitert"
msgid "Export your subscriptions and categories as an OPML file that can be imported in other feed reading services" 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" 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/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
msgid "Feed URL" msgid "Feed URL"
msgstr "Feed-URL" msgstr "Feed-URL"
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "Feedname"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now" msgid "Fetch all my feeds now"
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "Datei ist erforderlich"
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
msgid "Filtering expression" msgid "Filtering expression"
msgstr "Filterausdruck" msgstr "Filterausdruck"
#: src/pages/app/AboutPage.tsx
msgid "For those of you who prefer bitcoin, here is the address: {bitcoinAddress}"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Forgot password?" msgid "Forgot password?"
msgstr "Passwort vergessen?" msgstr "Passwort vergessen?"
@@ -324,17 +367,17 @@ msgstr "Neuen API-Schlüssel generieren"
msgid "Generated feed url" msgid "Generated feed url"
msgstr "Generierte Feed-URL" msgstr "Generierte Feed-URL"
#: src/pages/app/AboutPage.tsx #: src/components/content/FeedEntryContextMenu.tsx
msgid "Go to the API documentation." msgid "Go to {0}"
msgstr "Gehen Sie zur API-Dokumentation." msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Go to the All view" msgid "Go to the All view"
msgstr "Zur Ansicht Alle wechseln" msgstr "Zur Ansicht Alle wechseln"
#: src/components/content/FeedEntryContextMenu.tsx #: src/pages/app/AboutPage.tsx
msgid "Go to {0}" msgid "Go to the API documentation."
msgstr "" msgstr "Gehen Sie zur API-Dokumentation."
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "Goodies" msgid "Goodies"
@@ -352,10 +395,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." 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." 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 #: src/components/content/add/ImportOpml.tsx
msgid "Import" msgid "Import"
msgstr "Importieren" msgstr "Importieren"
@@ -491,6 +530,7 @@ msgid "Newest first"
msgstr "Neueste zuerst" msgstr "Neueste zuerst"
#: src/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
#: src/components/header/Header.tsx
msgid "Next" msgid "Next"
msgstr "Weiter" msgstr "Weiter"
@@ -510,19 +550,6 @@ msgstr "Keine weiteren Einträge"
msgid "Nothing found" msgid "Nothing found"
msgstr "Nichts gefunden" 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 #: src/pages/app/AboutPage.tsx
msgid "Oldest first" msgid "Oldest first"
msgstr "Älteste zuerst" msgstr "Älteste zuerst"
@@ -531,6 +558,10 @@ msgstr "Älteste zuerst"
msgid "Oops!" msgid "Oops!"
msgstr "Ups!" msgstr "Ups!"
#: src/components/header/Header.tsx
msgid "Open CommaFeed"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Open current entry in a new tab" msgid "Open current entry in a new tab"
msgstr "Aktuellen Eintrag in neuem Tab öffnen" msgstr "Aktuellen Eintrag in neuem Tab öffnen"
@@ -563,6 +594,19 @@ msgstr "Vorherigen Eintrag öffnen"
msgid "Open/close current entry" msgid "Open/close current entry"
msgstr "Aktuellen Eintrag öffnen/schließen" 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 #: src/pages/app/AboutPage.tsx
msgid "Order" msgid "Order"
msgstr "Bestellung" msgstr "Bestellung"
@@ -596,14 +640,14 @@ msgstr "Passwörter stimmen nicht überein"
msgid "Position" msgid "Position"
msgstr "Stellung" msgstr "Stellung"
#: src/components/header/Header.tsx
msgid "Previous"
msgstr ""
#: src/pages/app/SettingsPage.tsx #: src/pages/app/SettingsPage.tsx
msgid "Profile" msgid "Profile"
msgstr "Profil" msgstr "Profil"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr "REST-API"
#: src/pages/auth/PasswordRecoveryPage.tsx #: src/pages/auth/PasswordRecoveryPage.tsx
msgid "Recover password" msgid "Recover password"
msgstr "Kennwort wiederherstellen" msgstr "Kennwort wiederherstellen"
@@ -617,11 +661,16 @@ msgstr "Aktualisieren"
msgid "Registrations are closed on this CommaFeed instance" msgid "Registrations are closed on this CommaFeed instance"
msgstr "Registrierungen sind für diese CommaFeed-Instanz geschlossen" msgstr "Registrierungen sind für diese CommaFeed-Instanz geschlossen"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr "REST-API"
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click" msgid "Right click"
msgstr "" msgstr ""
#: src/components/admin/UserEdit.tsx #: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx #: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
@@ -719,14 +768,14 @@ msgstr "Markiert"
msgid "Subscribe" msgid "Subscribe"
msgstr "Abonnieren" msgstr "Abonnieren"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "URL abonnieren"
#: src/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
msgid "Subscribe to the feed" msgid "Subscribe to the feed"
msgstr "Feed abonnieren" msgstr "Feed abonnieren"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "URL abonnieren"
#: src/components/Alert.tsx #: src/components/Alert.tsx
msgid "Success" msgid "Success"
msgstr "Erfolg" msgstr "Erfolg"
@@ -736,10 +785,12 @@ msgid "Swipe header to the right"
msgstr "" msgstr ""
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to dark theme" msgid "Switch to dark theme"
msgstr "Zum dunklen Design wechseln" msgstr "Zum dunklen Design wechseln"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to light theme" msgid "Switch to light theme"
msgstr "Wechseln Sie zum Lichtdesign" msgstr "Wechseln Sie zum Lichtdesign"
@@ -759,6 +810,10 @@ msgstr "Thema"
msgid "Toggle read status of current entry" msgid "Toggle read status of current entry"
msgstr "Lesestatus des aktuellen Eintrags umschalten" msgstr "Lesestatus des aktuellen Eintrags umschalten"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Toggle sidebar"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Try out CommaFeed with the demo account: demo/demo" msgid "Try out CommaFeed with the demo account: demo/demo"
msgstr "Testen Sie CommaFeed mit dem Demokonto: demo/demo" msgstr "Testen Sie CommaFeed mit dem Demokonto: demo/demo"
@@ -781,15 +836,15 @@ msgstr "Stern entfernen"
msgid "Unsubscribe" msgid "Unsubscribe"
msgstr "Abbestellen" msgstr "Abbestellen"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Benutzername"
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "User Name or E-mail" msgid "User Name or E-mail"
msgstr "Benutzername oder E-Mail" msgstr "Benutzername oder E-Mail"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Benutzername"
#: src/components/Alert.tsx #: src/components/Alert.tsx
msgid "Warning" msgid "Warning"
msgstr "Warnung" msgstr "Warnung"
@@ -805,11 +860,3 @@ msgstr "Sie haben noch keine Abonnements. "
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh." msgid "Your feeds have been queued for refresh."
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "Datei ist erforderlich"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""

View File

@@ -13,6 +13,14 @@ msgstr ""
"Language-Team: \n" "Language-Team: \n"
"Plural-Forms: \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 #: src/pages/app/FeedDetailsPage.tsx
msgid "<0>Complete syntax is available </0><1>here</1>." msgid "<0>Complete syntax is available </0><1>here</1>."
msgstr "<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>" msgid "<0>Have an account?</0><1>Log in!</1>"
msgstr "<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 #: src/pages/auth/LoginPage.tsx
msgid "<0>Need an account?</0><1>Sign up!</1>" msgid "<0>Need an account?</0><1>Sign up!</1>"
msgstr "<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/components/header/ProfileMenu.tsx
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "About" msgid "About"
@@ -63,6 +71,10 @@ msgstr "Admin"
msgid "All" msgid "All"
msgstr "All" msgstr "All"
#: src/components/settings/DisplaySettings.tsx
msgid "Always scroll selected entry to the top of the page, even if it fits entirely on screen"
msgstr "Always scroll selected entry to the top of the page, even if it fits entirely on screen"
#: src/pages/auth/PasswordRecoveryPage.tsx #: src/pages/auth/PasswordRecoveryPage.tsx
msgid "An email has been sent if this address was registered. Check your inbox." msgid "An email has been sent if this address was registered. Check your inbox."
msgstr "An email has been sent if this address was registered. Check your inbox." msgstr "An email has been sent if this address was registered. Check your inbox."
@@ -75,6 +87,10 @@ msgstr "An opml file is an XML file containing feed URLs and categories. You can
msgid "Analyze feed" msgid "Analyze feed"
msgstr "Analyze feed" msgstr "Analyze feed"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "API key"
#: src/pages/app/CategoryDetailsPage.tsx #: src/pages/app/CategoryDetailsPage.tsx
msgid "Are you sure you want to delete category <0>{categoryName}</0>?" msgid "Are you sure you want to delete category <0>{categoryName}</0>?"
msgstr "Are you sure you want to delete category <0>{categoryName}</0>?" msgstr "Are you sure you want to delete category <0>{categoryName}</0>?"
@@ -115,14 +131,19 @@ msgstr "Back"
msgid "Back to log in" msgid "Back to log in"
msgstr "Back to log in" msgstr "Back to log in"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required for Chrome"
msgstr "Browser extension required for Chrome"
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "Browser extentions" msgid "Browser extention"
msgstr "Browser extentions" msgstr "Browser extention"
#: src/components/admin/UserEdit.tsx #: src/components/admin/UserEdit.tsx
#: src/components/content/add/AddCategory.tsx #: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx #: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx #: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx #: src/pages/admin/AdminUsersPage.tsx
@@ -151,16 +172,16 @@ msgid "Check that the feed is working"
msgstr "Check that the feed is working" msgstr "Check that the feed is working"
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>." msgid "CommaFeed browser extension version {browserExtensionVersion}."
msgstr "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>." msgstr "CommaFeed browser extension version {browserExtensionVersion}."
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item" msgid "CommaFeed next unread item"
msgstr "CommaFeed next unread item" msgstr "CommaFeed next unread item"
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed version {version} ({revision})" msgid "CommaFeed version {version} ({revision})."
msgstr "CommaFeed version {version} ({revision})" msgstr "CommaFeed version {version} ({revision})."
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Compact" msgid "Compact"
@@ -194,6 +215,18 @@ msgstr "Ctrl"
msgid "Current password" msgid "Current password"
msgstr "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 #: src/pages/admin/AdminUsersPage.tsx
msgid "Date created" msgid "Date created"
msgstr "Date created" msgstr "Date created"
@@ -202,15 +235,15 @@ msgstr "Date created"
msgid "Delete" msgid "Delete"
msgstr "Delete" msgstr "Delete"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Delete Category"
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
msgid "Delete account" msgid "Delete account"
msgstr "Delete account" msgstr "Delete account"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Delete Category"
#: src/pages/admin/AdminUsersPage.tsx #: src/pages/admin/AdminUsersPage.tsx
msgid "Delete user" msgid "Delete user"
msgstr "Delete user" msgstr "Delete user"
@@ -228,6 +261,11 @@ msgstr "Detailed"
msgid "Display" msgid "Display"
msgstr "Display" msgstr "Display"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/DonatePage.tsx
msgid "Donate"
msgstr "Donate"
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
msgid "Download" msgid "Download"
msgstr "Download" msgstr "Download"
@@ -282,28 +320,33 @@ msgstr "Expanded"
msgid "Export your subscriptions and categories as an OPML file that can be imported in other feed reading services" 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" 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/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
msgid "Feed URL" msgid "Feed URL"
msgstr "Feed URL" msgstr "Feed URL"
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "Feed name"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now" msgid "Fetch all my feeds now"
msgstr "Fetch all my feeds now" msgstr "Fetch all my feeds now"
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "file is required"
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
msgid "Filtering expression" msgid "Filtering expression"
msgstr "Filtering expression" msgstr "Filtering expression"
#: src/pages/app/AboutPage.tsx
msgid "For those of you who prefer bitcoin, here is the address: {bitcoinAddress}"
msgstr "For those of you who prefer bitcoin, here is the address: {bitcoinAddress}"
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Forgot password?" msgid "Forgot password?"
msgstr "Forgot password?" msgstr "Forgot password?"
@@ -324,17 +367,17 @@ msgstr "Generate new API key"
msgid "Generated feed url" msgid "Generated feed url"
msgstr "Generated feed url" msgstr "Generated feed url"
#: src/pages/app/AboutPage.tsx #: src/components/content/FeedEntryContextMenu.tsx
msgid "Go to the API documentation." msgid "Go to {0}"
msgstr "Go to the API documentation." msgstr "Go to {0}"
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Go to the All view" msgid "Go to the All view"
msgstr "Go to the All view" msgstr "Go to the All view"
#: src/components/content/FeedEntryContextMenu.tsx #: src/pages/app/AboutPage.tsx
msgid "Go to {0}" msgid "Go to the API documentation."
msgstr "Go to {0}" msgstr "Go to the API documentation."
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "Goodies" msgid "Goodies"
@@ -352,10 +395,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." 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." msgstr "If you encounter an issue, please report it on the issues page of the GitHub project."
#: src/pages/app/AboutPage.tsx
msgid "If you like this project, please consider a donation to support the developer and help cover the costs of keeping this website online."
msgstr "If you like this project, please consider a donation to support the developer and help cover the costs of keeping this website online."
#: src/components/content/add/ImportOpml.tsx #: src/components/content/add/ImportOpml.tsx
msgid "Import" msgid "Import"
msgstr "Import" msgstr "Import"
@@ -491,6 +530,7 @@ msgid "Newest first"
msgstr "Newest first" msgstr "Newest first"
#: src/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
#: src/components/header/Header.tsx
msgid "Next" msgid "Next"
msgstr "Next" msgstr "Next"
@@ -510,19 +550,6 @@ msgstr "No more entries"
msgid "Nothing found" msgid "Nothing found"
msgstr "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 #: src/pages/app/AboutPage.tsx
msgid "Oldest first" msgid "Oldest first"
msgstr "Oldest first" msgstr "Oldest first"
@@ -531,6 +558,10 @@ msgstr "Oldest first"
msgid "Oops!" msgid "Oops!"
msgstr "Oops!" msgstr "Oops!"
#: src/components/header/Header.tsx
msgid "Open CommaFeed"
msgstr "Open CommaFeed"
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Open current entry in a new tab" msgid "Open current entry in a new tab"
msgstr "Open current entry in a new tab" msgstr "Open current entry in a new tab"
@@ -563,6 +594,19 @@ msgstr "Open previous entry"
msgid "Open/close current entry" msgid "Open/close current entry"
msgstr "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 #: src/pages/app/AboutPage.tsx
msgid "Order" msgid "Order"
msgstr "Order" msgstr "Order"
@@ -596,14 +640,14 @@ msgstr "Passwords do not match"
msgid "Position" msgid "Position"
msgstr "Position" msgstr "Position"
#: src/components/header/Header.tsx
msgid "Previous"
msgstr "Previous"
#: src/pages/app/SettingsPage.tsx #: src/pages/app/SettingsPage.tsx
msgid "Profile" msgid "Profile"
msgstr "Profile" msgstr "Profile"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr "REST API"
#: src/pages/auth/PasswordRecoveryPage.tsx #: src/pages/auth/PasswordRecoveryPage.tsx
msgid "Recover password" msgid "Recover password"
msgstr "Recover password" msgstr "Recover password"
@@ -617,11 +661,16 @@ msgstr "Refresh"
msgid "Registrations are closed on this CommaFeed instance" msgid "Registrations are closed on this CommaFeed instance"
msgstr "Registrations are closed on this CommaFeed instance" msgstr "Registrations are closed on this CommaFeed instance"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr "REST API"
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click" msgid "Right click"
msgstr "Right click" msgstr "Right click"
#: src/components/admin/UserEdit.tsx #: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx #: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
@@ -719,14 +768,14 @@ msgstr "Starred"
msgid "Subscribe" msgid "Subscribe"
msgstr "Subscribe" msgstr "Subscribe"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "Subscribe URL"
#: src/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
msgid "Subscribe to the feed" msgid "Subscribe to the feed"
msgstr "Subscribe to the feed" msgstr "Subscribe to the feed"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "Subscribe URL"
#: src/components/Alert.tsx #: src/components/Alert.tsx
msgid "Success" msgid "Success"
msgstr "Success" msgstr "Success"
@@ -736,10 +785,12 @@ msgid "Swipe header to the right"
msgstr "Swipe header to the right" msgstr "Swipe header to the right"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to dark theme" msgid "Switch to dark theme"
msgstr "Switch to dark theme" msgstr "Switch to dark theme"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to light theme" msgid "Switch to light theme"
msgstr "Switch to light theme" msgstr "Switch to light theme"
@@ -759,6 +810,10 @@ msgstr "Theme"
msgid "Toggle read status of current entry" msgid "Toggle read status of current entry"
msgstr "Toggle read status of current entry" msgstr "Toggle read status of current entry"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Toggle sidebar"
msgstr "Toggle sidebar"
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Try out CommaFeed with the demo account: demo/demo" msgid "Try out CommaFeed with the demo account: demo/demo"
msgstr "Try out CommaFeed with the demo account: demo/demo" msgstr "Try out CommaFeed with the demo account: demo/demo"
@@ -781,15 +836,15 @@ msgstr "Unstar"
msgid "Unsubscribe" msgid "Unsubscribe"
msgstr "Unsubscribe" msgstr "Unsubscribe"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "User name"
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "User Name or E-mail" msgid "User Name or E-mail"
msgstr "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 #: src/components/Alert.tsx
msgid "Warning" msgid "Warning"
msgstr "Warning" msgstr "Warning"
@@ -805,11 +860,3 @@ msgstr "You don't have any subscriptions yet. Why not try adding one by clicking
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh." msgid "Your feeds have been queued for refresh."
msgstr "Your feeds have been queued for refresh." msgstr "Your feeds have been queued for refresh."
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "file is required"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr "{0} (in {1})"

View File

@@ -13,6 +13,14 @@ msgstr ""
"Language-Team: \n" "Language-Team: \n"
"Plural-Forms: \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 #: src/pages/app/FeedDetailsPage.tsx
msgid "<0>Complete syntax is available </0><1>here</1>." msgid "<0>Complete syntax is available </0><1>here</1>."
msgstr "" msgstr ""
@@ -21,14 +29,14 @@ msgstr ""
msgid "<0>Have an account?</0><1>Log in!</1>" msgid "<0>Have an account?</0><1>Log in!</1>"
msgstr "<0>¿Tienes una cuenta?</0><1>¡Inicia sesión!</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 #: src/pages/auth/LoginPage.tsx
msgid "<0>Need an account?</0><1>Sign up!</1>" msgid "<0>Need an account?</0><1>Sign up!</1>"
msgstr "<0>¿Necesitas una cuenta?</0><1>¡Regístrate!</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/components/header/ProfileMenu.tsx
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "About" msgid "About"
@@ -63,6 +71,10 @@ msgstr "Administrador"
msgid "All" msgid "All"
msgstr "Todo" msgstr "Todo"
#: src/components/settings/DisplaySettings.tsx
msgid "Always scroll selected entry to the top of the page, even if it fits entirely on screen"
msgstr ""
#: src/pages/auth/PasswordRecoveryPage.tsx #: src/pages/auth/PasswordRecoveryPage.tsx
msgid "An email has been sent if this address was registered. Check your inbox." msgid "An email has been sent if this address was registered. Check your inbox."
msgstr "Se ha enviado un correo electrónico si se registró esta dirección. " msgstr "Se ha enviado un correo electrónico si se registró esta dirección. "
@@ -75,6 +87,10 @@ msgstr "Un archivo opml es un archivo XML que contiene categorías y direcciones
msgid "Analyze feed" msgid "Analyze feed"
msgstr "Analizar alimentación" msgstr "Analizar alimentación"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "clave API"
#: src/pages/app/CategoryDetailsPage.tsx #: src/pages/app/CategoryDetailsPage.tsx
msgid "Are you sure you want to delete category <0>{categoryName}</0>?" 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>?" msgstr "¿Está seguro de que desea eliminar la categoría <0>{categoryName}</0>?"
@@ -115,14 +131,19 @@ msgstr "Atrás"
msgid "Back to log in" msgid "Back to log in"
msgstr "Volver a iniciar sesión" msgstr "Volver a iniciar sesión"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required for Chrome"
msgstr ""
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "Browser extentions" msgid "Browser extention"
msgstr "Extensiones del navegador" msgstr ""
#: src/components/admin/UserEdit.tsx #: src/components/admin/UserEdit.tsx
#: src/components/content/add/AddCategory.tsx #: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx #: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx #: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx #: src/pages/admin/AdminUsersPage.tsx
@@ -151,16 +172,16 @@ msgid "Check that the feed is working"
msgstr "Compruebe que el feed funciona" msgstr "Compruebe que el feed funciona"
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>." msgid "CommaFeed browser extension version {browserExtensionVersion}."
msgstr "CommaFeed es un proyecto de código abierto. " msgstr ""
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item" msgid "CommaFeed next unread item"
msgstr "CommaFeed siguiente elemento no leído" msgstr "CommaFeed siguiente elemento no leído"
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed version {version} ({revision})" msgid "CommaFeed version {version} ({revision})."
msgstr "versión de CommaFeed {versión} ({revisión})" msgstr ""
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Compact" msgid "Compact"
@@ -194,6 +215,18 @@ msgstr ""
msgid "Current password" msgid "Current password"
msgstr "Contraseña actual" 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 #: src/pages/admin/AdminUsersPage.tsx
msgid "Date created" msgid "Date created"
msgstr "Fecha de creación" msgstr "Fecha de creación"
@@ -202,15 +235,15 @@ msgstr "Fecha de creación"
msgid "Delete" msgid "Delete"
msgstr "Borrar" msgstr "Borrar"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Borrar categoría"
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
msgid "Delete account" msgid "Delete account"
msgstr "Borrar cuenta" msgstr "Borrar cuenta"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Borrar categoría"
#: src/pages/admin/AdminUsersPage.tsx #: src/pages/admin/AdminUsersPage.tsx
msgid "Delete user" msgid "Delete user"
msgstr "Borrar usuario" msgstr "Borrar usuario"
@@ -228,6 +261,11 @@ msgstr ""
msgid "Display" msgid "Display"
msgstr "Pantalla" msgstr "Pantalla"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/DonatePage.tsx
msgid "Donate"
msgstr ""
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
msgid "Download" msgid "Download"
msgstr "descargar" msgstr "descargar"
@@ -282,28 +320,33 @@ msgstr "Expandido"
msgid "Export your subscriptions and categories as an OPML file that can be imported in other feed reading services" 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" 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/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
msgid "Feed URL" msgid "Feed URL"
msgstr "URL de fuente" msgstr "URL de fuente"
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "Nombre de alimentación"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now" msgid "Fetch all my feeds now"
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "archivo requerido"
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
msgid "Filtering expression" msgid "Filtering expression"
msgstr "Expresión de filtrado" msgstr "Expresión de filtrado"
#: src/pages/app/AboutPage.tsx
msgid "For those of you who prefer bitcoin, here is the address: {bitcoinAddress}"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Forgot password?" msgid "Forgot password?"
msgstr "¿Olvidaste la contraseña?" msgstr "¿Olvidaste la contraseña?"
@@ -324,17 +367,17 @@ msgstr "Generar nueva clave API"
msgid "Generated feed url" msgid "Generated feed url"
msgstr "URL del feed generado" msgstr "URL del feed generado"
#: src/pages/app/AboutPage.tsx #: src/components/content/FeedEntryContextMenu.tsx
msgid "Go to the API documentation." msgid "Go to {0}"
msgstr "Ir a la documentación de la API." msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Go to the All view" msgid "Go to the All view"
msgstr "Ir a la vista Todo" msgstr "Ir a la vista Todo"
#: src/components/content/FeedEntryContextMenu.tsx #: src/pages/app/AboutPage.tsx
msgid "Go to {0}" msgid "Go to the API documentation."
msgstr "" msgstr "Ir a la documentación de la API."
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "Goodies" msgid "Goodies"
@@ -352,10 +395,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." 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." 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 #: src/components/content/add/ImportOpml.tsx
msgid "Import" msgid "Import"
msgstr "Importar" msgstr "Importar"
@@ -491,6 +530,7 @@ msgid "Newest first"
msgstr "más reciente primero" msgstr "más reciente primero"
#: src/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
#: src/components/header/Header.tsx
msgid "Next" msgid "Next"
msgstr "Siguiente" msgstr "Siguiente"
@@ -510,19 +550,6 @@ msgstr "No más entradas"
msgid "Nothing found" msgid "Nothing found"
msgstr "Nada encontrado" 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 #: src/pages/app/AboutPage.tsx
msgid "Oldest first" msgid "Oldest first"
msgstr "más antigua primero" msgstr "más antigua primero"
@@ -531,6 +558,10 @@ msgstr "más antigua primero"
msgid "Oops!" msgid "Oops!"
msgstr "¡Ups!" msgstr "¡Ups!"
#: src/components/header/Header.tsx
msgid "Open CommaFeed"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Open current entry in a new tab" msgid "Open current entry in a new tab"
msgstr "Abrir la entrada actual en una nueva pestaña" msgstr "Abrir la entrada actual en una nueva pestaña"
@@ -563,6 +594,19 @@ msgstr "Abrir entrada anterior"
msgid "Open/close current entry" msgid "Open/close current entry"
msgstr "Abrir/cerrar entrada actual" 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 #: src/pages/app/AboutPage.tsx
msgid "Order" msgid "Order"
msgstr "Orden" msgstr "Orden"
@@ -596,14 +640,14 @@ msgstr "Las contraseñas no coinciden"
msgid "Position" msgid "Position"
msgstr "Posición" msgstr "Posición"
#: src/components/header/Header.tsx
msgid "Previous"
msgstr ""
#: src/pages/app/SettingsPage.tsx #: src/pages/app/SettingsPage.tsx
msgid "Profile" msgid "Profile"
msgstr "Perfil" msgstr "Perfil"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr "API REST"
#: src/pages/auth/PasswordRecoveryPage.tsx #: src/pages/auth/PasswordRecoveryPage.tsx
msgid "Recover password" msgid "Recover password"
msgstr "Recuperar contraseña" msgstr "Recuperar contraseña"
@@ -617,11 +661,16 @@ msgstr "Actualizar"
msgid "Registrations are closed on this CommaFeed instance" msgid "Registrations are closed on this CommaFeed instance"
msgstr "Los registros están cerrados en esta instancia de CommaFeed" msgstr "Los registros están cerrados en esta instancia de CommaFeed"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr "API REST"
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click" msgid "Right click"
msgstr "" msgstr ""
#: src/components/admin/UserEdit.tsx #: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx #: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
@@ -719,14 +768,14 @@ msgstr "Destacado"
msgid "Subscribe" msgid "Subscribe"
msgstr "Suscribirse" msgstr "Suscribirse"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "URL de suscripción"
#: src/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
msgid "Subscribe to the feed" msgid "Subscribe to the feed"
msgstr "Suscríbete a la fuente" msgstr "Suscríbete a la fuente"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "URL de suscripción"
#: src/components/Alert.tsx #: src/components/Alert.tsx
msgid "Success" msgid "Success"
msgstr "Éxito" msgstr "Éxito"
@@ -736,10 +785,12 @@ msgid "Swipe header to the right"
msgstr "" msgstr ""
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to dark theme" msgid "Switch to dark theme"
msgstr "Cambiar a tema oscuro" msgstr "Cambiar a tema oscuro"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to light theme" msgid "Switch to light theme"
msgstr "Cambiar a tema claro" msgstr "Cambiar a tema claro"
@@ -759,6 +810,10 @@ msgstr "Tema"
msgid "Toggle read status of current entry" msgid "Toggle read status of current entry"
msgstr "Alternar estado de lectura de la entrada actual" msgstr "Alternar estado de lectura de la entrada actual"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Toggle sidebar"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Try out CommaFeed with the demo account: demo/demo" msgid "Try out CommaFeed with the demo account: demo/demo"
msgstr "Pruebe CommaFeed con la cuenta demo: demo/demo" msgstr "Pruebe CommaFeed con la cuenta demo: demo/demo"
@@ -781,15 +836,15 @@ msgstr "Desmarcar"
msgid "Unsubscribe" msgid "Unsubscribe"
msgstr "Cancelar suscripción" 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
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "User Name or E-mail" msgid "User Name or E-mail"
msgstr "Nombre de usuario o correo electrónico" msgstr "Nombre de usuario o correo electrónico"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Nombre de usuario"
#: src/components/Alert.tsx #: src/components/Alert.tsx
msgid "Warning" msgid "Warning"
msgstr "Advertencia" msgstr "Advertencia"
@@ -805,11 +860,3 @@ msgstr "Todavía no tienes ninguna suscripción. "
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh." msgid "Your feeds have been queued for refresh."
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "archivo requerido"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""

View File

@@ -13,6 +13,14 @@ msgstr ""
"Language-Team: \n" "Language-Team: \n"
"Plural-Forms: \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 #: src/pages/app/FeedDetailsPage.tsx
msgid "<0>Complete syntax is available </0><1>here</1>." msgid "<0>Complete syntax is available </0><1>here</1>."
msgstr "" msgstr ""
@@ -21,14 +29,14 @@ msgstr ""
msgid "<0>Have an account?</0><1>Log in!</1>" msgid "<0>Have an account?</0><1>Log in!</1>"
msgstr "<0>حساب دارید؟</0><1>وارد سیستم شوید!</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 #: src/pages/auth/LoginPage.tsx
msgid "<0>Need an account?</0><1>Sign up!</1>" msgid "<0>Need an account?</0><1>Sign up!</1>"
msgstr "<0>به یک حساب نیاز دارید؟</0><1>ثبت نام کنید!</1>" msgstr "<0>به یک حساب نیاز دارید؟</0><1>ثبت نام کنید!</1>"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "کلید API"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "About" msgid "About"
@@ -63,6 +71,10 @@ msgstr "مدیر"
msgid "All" msgid "All"
msgstr "همه" msgstr "همه"
#: src/components/settings/DisplaySettings.tsx
msgid "Always scroll selected entry to the top of the page, even if it fits entirely on screen"
msgstr ""
#: src/pages/auth/PasswordRecoveryPage.tsx #: src/pages/auth/PasswordRecoveryPage.tsx
msgid "An email has been sent if this address was registered. Check your inbox." msgid "An email has been sent if this address was registered. Check your inbox."
msgstr "اگر این آدرس ثبت شده باشد ایمیل ارسال شده است. " msgstr "اگر این آدرس ثبت شده باشد ایمیل ارسال شده است. "
@@ -75,6 +87,10 @@ msgstr "یک فایل opml یک فایل XML است که حاوی آدرس‌ه
msgid "Analyze feed" msgid "Analyze feed"
msgstr "خوراک را تجزیه و تحلیل کنید" msgstr "خوراک را تجزیه و تحلیل کنید"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "کلید API"
#: src/pages/app/CategoryDetailsPage.tsx #: src/pages/app/CategoryDetailsPage.tsx
msgid "Are you sure you want to delete category <0>{categoryName}</0>?" msgid "Are you sure you want to delete category <0>{categoryName}</0>?"
msgstr "آیا مطمئن هستید که می خواهید دسته <0>{categoryName}</0> را حذف کنید؟" msgstr "آیا مطمئن هستید که می خواهید دسته <0>{categoryName}</0> را حذف کنید؟"
@@ -115,14 +131,19 @@ msgstr "برگشت"
msgid "Back to log in" msgid "Back to log in"
msgstr "بازگشت برای ورود به سیستم" msgstr "بازگشت برای ورود به سیستم"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required for Chrome"
msgstr ""
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "Browser extentions" msgid "Browser extention"
msgstr "گسترش مرورگر" msgstr ""
#: src/components/admin/UserEdit.tsx #: src/components/admin/UserEdit.tsx
#: src/components/content/add/AddCategory.tsx #: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx #: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx #: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx #: src/pages/admin/AdminUsersPage.tsx
@@ -151,16 +172,16 @@ msgid "Check that the feed is working"
msgstr "بررسی کنید که خوراک کار می کند" msgstr "بررسی کنید که خوراک کار می کند"
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>." msgid "CommaFeed browser extension version {browserExtensionVersion}."
msgstr "CommaFeed یک پروژه منبع باز است. " msgstr ""
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item" msgid "CommaFeed next unread item"
msgstr "مورد خوانده نشده بعدی CommaFeed" msgstr "مورد خوانده نشده بعدی CommaFeed"
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed version {version} ({revision})" msgid "CommaFeed version {version} ({revision})."
msgstr "نسخه {نسخه} CommaFeed ({نسخه})" msgstr ""
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Compact" msgid "Compact"
@@ -194,6 +215,18 @@ msgstr ""
msgid "Current password" msgid "Current password"
msgstr "رمز عبور فعلی" 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 #: src/pages/admin/AdminUsersPage.tsx
msgid "Date created" msgid "Date created"
msgstr "تاریخ ایجاد" msgstr "تاریخ ایجاد"
@@ -202,15 +235,15 @@ msgstr "تاریخ ایجاد"
msgid "Delete" msgid "Delete"
msgstr "حذف کنید" msgstr "حذف کنید"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "حذف دسته"
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
msgid "Delete account" msgid "Delete account"
msgstr "حذف حساب" msgstr "حذف حساب"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "حذف دسته"
#: src/pages/admin/AdminUsersPage.tsx #: src/pages/admin/AdminUsersPage.tsx
msgid "Delete user" msgid "Delete user"
msgstr "حذف کاربر" msgstr "حذف کاربر"
@@ -228,6 +261,11 @@ msgstr ""
msgid "Display" msgid "Display"
msgstr "نمایش" msgstr "نمایش"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/DonatePage.tsx
msgid "Donate"
msgstr ""
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
msgid "Download" msgid "Download"
msgstr "دانلود" msgstr "دانلود"
@@ -282,28 +320,33 @@ msgstr "گسترش یافت"
msgid "Export your subscriptions and categories as an OPML file that can be imported in other feed reading services" msgid "Export your subscriptions and categories as an OPML file that can be imported in other feed reading services"
msgstr "اشتراک ها و دسته های خود را به عنوان یک فایل OPML صادر کنید که می تواند در سایر خدمات خواندن فید وارد شود" 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/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
msgid "Feed URL" msgid "Feed URL"
msgstr "URL فید" msgstr "URL فید"
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "نام فید"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now" msgid "Fetch all my feeds now"
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "فایل مورد نیاز است"
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
msgid "Filtering expression" msgid "Filtering expression"
msgstr "بیان فیلتر" msgstr "بیان فیلتر"
#: src/pages/app/AboutPage.tsx
msgid "For those of you who prefer bitcoin, here is the address: {bitcoinAddress}"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Forgot password?" msgid "Forgot password?"
msgstr "رمز عبور را فراموش کرده اید؟" msgstr "رمز عبور را فراموش کرده اید؟"
@@ -324,17 +367,17 @@ msgstr "کلید API جدید ایجاد کنید"
msgid "Generated feed url" msgid "Generated feed url"
msgstr "آدرس اینترنتی فید تولید شده" msgstr "آدرس اینترنتی فید تولید شده"
#: src/pages/app/AboutPage.tsx #: src/components/content/FeedEntryContextMenu.tsx
msgid "Go to the API documentation." msgid "Go to {0}"
msgstr "به مستندات API بروید." msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Go to the All view" msgid "Go to the All view"
msgstr "به نمای All بروید" msgstr "به نمای All بروید"
#: src/components/content/FeedEntryContextMenu.tsx #: src/pages/app/AboutPage.tsx
msgid "Go to {0}" msgid "Go to the API documentation."
msgstr "" msgstr "به مستندات API بروید."
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "Goodies" msgid "Goodies"
@@ -352,10 +395,6 @@ msgstr "اگر خالی نباشد، عبارتی به \"درست\" یا \"نا
msgid "If you encounter an issue, please report it on the issues page of the GitHub project." msgid "If you encounter an issue, please report it on the issues page of the GitHub project."
msgstr "اگر با مشکلی مواجه شدید، لطفاً آن را در صفحه مشکلات پروژه GitHub گزارش دهید." 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 #: src/components/content/add/ImportOpml.tsx
msgid "Import" msgid "Import"
msgstr "واردات" msgstr "واردات"
@@ -491,6 +530,7 @@ msgid "Newest first"
msgstr "ابتدا جدیدترین" msgstr "ابتدا جدیدترین"
#: src/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
#: src/components/header/Header.tsx
msgid "Next" msgid "Next"
msgstr "بعد" msgstr "بعد"
@@ -510,19 +550,6 @@ msgstr "ورودی دیگری وجود ندارد"
msgid "Nothing found" msgid "Nothing found"
msgstr "چیزی پیدا نشد" 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 #: src/pages/app/AboutPage.tsx
msgid "Oldest first" msgid "Oldest first"
msgstr "قدیمی ترین اول" msgstr "قدیمی ترین اول"
@@ -531,6 +558,10 @@ msgstr "قدیمی ترین اول"
msgid "Oops!" msgid "Oops!"
msgstr "اوه!" msgstr "اوه!"
#: src/components/header/Header.tsx
msgid "Open CommaFeed"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Open current entry in a new tab" msgid "Open current entry in a new tab"
msgstr "ورودی فعلی را در یک برگه جدید باز کنید" msgstr "ورودی فعلی را در یک برگه جدید باز کنید"
@@ -563,6 +594,19 @@ msgstr "ورودی قبلی را باز کنید"
msgid "Open/close current entry" msgid "Open/close current entry"
msgstr "باز کردن/بستن ورودی فعلی" 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 #: src/pages/app/AboutPage.tsx
msgid "Order" msgid "Order"
msgstr "سفارش" msgstr "سفارش"
@@ -596,14 +640,14 @@ msgstr "گذرواژه ها مطابقت ندارند"
msgid "Position" msgid "Position"
msgstr "موقعیت" msgstr "موقعیت"
#: src/components/header/Header.tsx
msgid "Previous"
msgstr ""
#: src/pages/app/SettingsPage.tsx #: src/pages/app/SettingsPage.tsx
msgid "Profile" msgid "Profile"
msgstr "نمایه" msgstr "نمایه"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/pages/auth/PasswordRecoveryPage.tsx #: src/pages/auth/PasswordRecoveryPage.tsx
msgid "Recover password" msgid "Recover password"
msgstr "بازیابی رمز عبور" msgstr "بازیابی رمز عبور"
@@ -617,11 +661,16 @@ msgstr "تازه کردن"
msgid "Registrations are closed on this CommaFeed instance" msgid "Registrations are closed on this CommaFeed instance"
msgstr "ثبت نام در این نمونه CommaFeed بسته شده است" msgstr "ثبت نام در این نمونه CommaFeed بسته شده است"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click" msgid "Right click"
msgstr "" msgstr ""
#: src/components/admin/UserEdit.tsx #: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx #: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
@@ -719,14 +768,14 @@ msgstr "ستاره دار"
msgid "Subscribe" msgid "Subscribe"
msgstr "مشترک شوید" msgstr "مشترک شوید"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "URL اشتراک"
#: src/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
msgid "Subscribe to the feed" msgid "Subscribe to the feed"
msgstr "در فید مشترک شوید" msgstr "در فید مشترک شوید"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "URL اشتراک"
#: src/components/Alert.tsx #: src/components/Alert.tsx
msgid "Success" msgid "Success"
msgstr "موفقیت" msgstr "موفقیت"
@@ -736,10 +785,12 @@ msgid "Swipe header to the right"
msgstr "" msgstr ""
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to dark theme" msgid "Switch to dark theme"
msgstr "تغییر به تم تیره" msgstr "تغییر به تم تیره"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to light theme" msgid "Switch to light theme"
msgstr "روی زمینه روشن" msgstr "روی زمینه روشن"
@@ -759,6 +810,10 @@ msgstr "تم"
msgid "Toggle read status of current entry" msgid "Toggle read status of current entry"
msgstr "وضعیت خواندن ورودی فعلی را تغییر دهید" msgstr "وضعیت خواندن ورودی فعلی را تغییر دهید"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Toggle sidebar"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Try out CommaFeed with the demo account: demo/demo" msgid "Try out CommaFeed with the demo account: demo/demo"
msgstr "CommaFeed را با حساب آزمایشی امتحان کنید: دمو/دمو" msgstr "CommaFeed را با حساب آزمایشی امتحان کنید: دمو/دمو"
@@ -781,15 +836,15 @@ msgstr ""
msgid "Unsubscribe" msgid "Unsubscribe"
msgstr "لغو اشتراک" msgstr "لغو اشتراک"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "نام کاربری"
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "User Name or E-mail" msgid "User Name or E-mail"
msgstr "نام کاربری یا ایمیل" msgstr "نام کاربری یا ایمیل"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "نام کاربری"
#: src/components/Alert.tsx #: src/components/Alert.tsx
msgid "Warning" msgid "Warning"
msgstr "هشدار" msgstr "هشدار"
@@ -805,11 +860,3 @@ msgstr "شما هنوز هیچ اشتراکی ندارید. "
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh." msgid "Your feeds have been queued for refresh."
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "فایل مورد نیاز است"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""

View File

@@ -13,6 +13,14 @@ msgstr ""
"Language-Team: \n" "Language-Team: \n"
"Plural-Forms: \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 #: src/pages/app/FeedDetailsPage.tsx
msgid "<0>Complete syntax is available </0><1>here</1>." msgid "<0>Complete syntax is available </0><1>here</1>."
msgstr "" msgstr ""
@@ -21,14 +29,14 @@ msgstr ""
msgid "<0>Have an account?</0><1>Log in!</1>" msgid "<0>Have an account?</0><1>Log in!</1>"
msgstr "<0>Onko sinulla tili?</0><1>Kirjaudu sisään!</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 #: src/pages/auth/LoginPage.tsx
msgid "<0>Need an account?</0><1>Sign up!</1>" msgid "<0>Need an account?</0><1>Sign up!</1>"
msgstr "<0>Tarvitsetko tilin?</0><1>Rekisteröidy!</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/components/header/ProfileMenu.tsx
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "About" msgid "About"
@@ -63,6 +71,10 @@ msgstr "Järjestelmänvalvoja"
msgid "All" msgid "All"
msgstr "Kaikki" msgstr "Kaikki"
#: src/components/settings/DisplaySettings.tsx
msgid "Always scroll selected entry to the top of the page, even if it fits entirely on screen"
msgstr ""
#: src/pages/auth/PasswordRecoveryPage.tsx #: src/pages/auth/PasswordRecoveryPage.tsx
msgid "An email has been sent if this address was registered. Check your inbox." msgid "An email has been sent if this address was registered. Check your inbox."
msgstr "Sähköposti on lähetetty, jos tämä osoite on rekisteröity. " msgstr "Sähköposti on lähetetty, jos tämä osoite on rekisteröity. "
@@ -75,6 +87,10 @@ msgstr "Opml-tiedosto on XML-tiedosto, joka sisältää syötteen URL-osoitteet
msgid "Analyze feed" msgid "Analyze feed"
msgstr "Analysoi syöte" msgstr "Analysoi syöte"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "API-avain"
#: src/pages/app/CategoryDetailsPage.tsx #: src/pages/app/CategoryDetailsPage.tsx
msgid "Are you sure you want to delete category <0>{categoryName}</0>?" msgid "Are you sure you want to delete category <0>{categoryName}</0>?"
msgstr "Haluatko varmasti poistaa luokan <0>{categoryName}</0>?" msgstr "Haluatko varmasti poistaa luokan <0>{categoryName}</0>?"
@@ -115,14 +131,19 @@ msgstr "Takaisin"
msgid "Back to log in" msgid "Back to log in"
msgstr "Takaisin sisäänkirjautumiseen" msgstr "Takaisin sisäänkirjautumiseen"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required for Chrome"
msgstr ""
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "Browser extentions" msgid "Browser extention"
msgstr "Selaimen laajennukset" msgstr ""
#: src/components/admin/UserEdit.tsx #: src/components/admin/UserEdit.tsx
#: src/components/content/add/AddCategory.tsx #: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx #: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx #: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx #: src/pages/admin/AdminUsersPage.tsx
@@ -151,16 +172,16 @@ msgid "Check that the feed is working"
msgstr "Tarkista, että syöttö toimii" msgstr "Tarkista, että syöttö toimii"
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>." msgid "CommaFeed browser extension version {browserExtensionVersion}."
msgstr "CommaFeed on avoimen lähdekoodin projekti. " msgstr ""
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item" msgid "CommaFeed next unread item"
msgstr "CommaFeed seuraava lukematon kohde" msgstr "CommaFeed seuraava lukematon kohde"
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed version {version} ({revision})" msgid "CommaFeed version {version} ({revision})."
msgstr "CommaFeed-versio {version} ({versio})" msgstr ""
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Compact" msgid "Compact"
@@ -194,6 +215,18 @@ msgstr ""
msgid "Current password" msgid "Current password"
msgstr "Nykyinen salasana" 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 #: src/pages/admin/AdminUsersPage.tsx
msgid "Date created" msgid "Date created"
msgstr "Luontipäivämäärä" msgstr "Luontipäivämäärä"
@@ -202,15 +235,15 @@ msgstr "Luontipäivämäärä"
msgid "Delete" msgid "Delete"
msgstr "Poista" msgstr "Poista"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Poista luokka"
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
msgid "Delete account" msgid "Delete account"
msgstr "Poista tili" msgstr "Poista tili"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Poista luokka"
#: src/pages/admin/AdminUsersPage.tsx #: src/pages/admin/AdminUsersPage.tsx
msgid "Delete user" msgid "Delete user"
msgstr "Poista käyttäjä" msgstr "Poista käyttäjä"
@@ -228,6 +261,11 @@ msgstr ""
msgid "Display" msgid "Display"
msgstr "Näyttö" msgstr "Näyttö"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/DonatePage.tsx
msgid "Donate"
msgstr ""
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
msgid "Download" msgid "Download"
msgstr "Lataa" msgstr "Lataa"
@@ -282,28 +320,33 @@ msgstr "Laajennettu"
msgid "Export your subscriptions and categories as an OPML file that can be imported in other feed reading services" 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" 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/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
msgid "Feed URL" msgid "Feed URL"
msgstr "Syötteen URL-osoite" msgstr "Syötteen URL-osoite"
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "Syötteen nimi"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now" msgid "Fetch all my feeds now"
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "tiedosto vaaditaan"
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
msgid "Filtering expression" msgid "Filtering expression"
msgstr "Suodattava lauseke" msgstr "Suodattava lauseke"
#: src/pages/app/AboutPage.tsx
msgid "For those of you who prefer bitcoin, here is the address: {bitcoinAddress}"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Forgot password?" msgid "Forgot password?"
msgstr "Unohditko salasanan?" msgstr "Unohditko salasanan?"
@@ -324,17 +367,17 @@ msgstr "Luo uusi API-avain"
msgid "Generated feed url" msgid "Generated feed url"
msgstr "Luotu syötteen URL-osoite" msgstr "Luotu syötteen URL-osoite"
#: src/pages/app/AboutPage.tsx #: src/components/content/FeedEntryContextMenu.tsx
msgid "Go to the API documentation." msgid "Go to {0}"
msgstr "Siirry API-dokumentaatioon." msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Go to the All view" msgid "Go to the All view"
msgstr "Siirry Kaikki-näkymään" msgstr "Siirry Kaikki-näkymään"
#: src/components/content/FeedEntryContextMenu.tsx #: src/pages/app/AboutPage.tsx
msgid "Go to {0}" msgid "Go to the API documentation."
msgstr "" msgstr "Siirry API-dokumentaatioon."
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "Goodies" msgid "Goodies"
@@ -352,10 +395,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." 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." 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 #: src/components/content/add/ImportOpml.tsx
msgid "Import" msgid "Import"
msgstr "Tuo" msgstr "Tuo"
@@ -491,6 +530,7 @@ msgid "Newest first"
msgstr "Uusin ensin" msgstr "Uusin ensin"
#: src/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
#: src/components/header/Header.tsx
msgid "Next" msgid "Next"
msgstr "Seuraava" msgstr "Seuraava"
@@ -510,19 +550,6 @@ msgstr "Ei enää merkintöjä"
msgid "Nothing found" msgid "Nothing found"
msgstr "Mitään ei löytynyt" 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 #: src/pages/app/AboutPage.tsx
msgid "Oldest first" msgid "Oldest first"
msgstr "Vanhin ensin" msgstr "Vanhin ensin"
@@ -531,6 +558,10 @@ msgstr "Vanhin ensin"
msgid "Oops!" msgid "Oops!"
msgstr "Hups!" msgstr "Hups!"
#: src/components/header/Header.tsx
msgid "Open CommaFeed"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Open current entry in a new tab" msgid "Open current entry in a new tab"
msgstr "Avaa nykyinen merkintä uudessa välilehdessä" msgstr "Avaa nykyinen merkintä uudessa välilehdessä"
@@ -563,6 +594,19 @@ msgstr "Avaa edellinen merkintä"
msgid "Open/close current entry" msgid "Open/close current entry"
msgstr "Avaa/sulje nykyinen merkintä" 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 #: src/pages/app/AboutPage.tsx
msgid "Order" msgid "Order"
msgstr "Tilaus" msgstr "Tilaus"
@@ -596,14 +640,14 @@ msgstr "Salasanat eivät täsmää"
msgid "Position" msgid "Position"
msgstr "Sijainti" msgstr "Sijainti"
#: src/components/header/Header.tsx
msgid "Previous"
msgstr ""
#: src/pages/app/SettingsPage.tsx #: src/pages/app/SettingsPage.tsx
msgid "Profile" msgid "Profile"
msgstr "Profiili" msgstr "Profiili"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/pages/auth/PasswordRecoveryPage.tsx #: src/pages/auth/PasswordRecoveryPage.tsx
msgid "Recover password" msgid "Recover password"
msgstr "Palauta salasana" msgstr "Palauta salasana"
@@ -617,11 +661,16 @@ msgstr "Päivitä"
msgid "Registrations are closed on this CommaFeed instance" msgid "Registrations are closed on this CommaFeed instance"
msgstr "Tämän CommaFeed-esiintymän rekisteröinnit on suljettu" msgstr "Tämän CommaFeed-esiintymän rekisteröinnit on suljettu"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click" msgid "Right click"
msgstr "" msgstr ""
#: src/components/admin/UserEdit.tsx #: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx #: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
@@ -719,14 +768,14 @@ msgstr "Tähdellä merkitty"
msgid "Subscribe" msgid "Subscribe"
msgstr "Tilaa" msgstr "Tilaa"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "Tilaa URL-osoite"
#: src/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
msgid "Subscribe to the feed" msgid "Subscribe to the feed"
msgstr "Tilaa syöte" msgstr "Tilaa syöte"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "Tilaa URL-osoite"
#: src/components/Alert.tsx #: src/components/Alert.tsx
msgid "Success" msgid "Success"
msgstr "Onnistui" msgstr "Onnistui"
@@ -736,10 +785,12 @@ msgid "Swipe header to the right"
msgstr "" msgstr ""
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to dark theme" msgid "Switch to dark theme"
msgstr "Vaihda tummaan teemaan" msgstr "Vaihda tummaan teemaan"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to light theme" msgid "Switch to light theme"
msgstr "Vaihda vaaleaan teemaan" msgstr "Vaihda vaaleaan teemaan"
@@ -759,6 +810,10 @@ msgstr "Teema"
msgid "Toggle read status of current entry" msgid "Toggle read status of current entry"
msgstr "Vaihda nykyisen merkinnän lukutila" msgstr "Vaihda nykyisen merkinnän lukutila"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Toggle sidebar"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Try out CommaFeed with the demo account: demo/demo" msgid "Try out CommaFeed with the demo account: demo/demo"
msgstr "Kokeile CommaFeediä demotilillä: demo/demo" msgstr "Kokeile CommaFeediä demotilillä: demo/demo"
@@ -781,15 +836,15 @@ msgstr "Poista tähti"
msgid "Unsubscribe" msgid "Unsubscribe"
msgstr "Peruuta tilaus" 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
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "User Name or E-mail" msgid "User Name or E-mail"
msgstr "Käyttäjänimi tai sähköpostiosoite" 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 #: src/components/Alert.tsx
msgid "Warning" msgid "Warning"
msgstr "Varoitus" msgstr "Varoitus"
@@ -805,11 +860,3 @@ msgstr "Sinulla ei ole vielä tilauksia. "
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh." msgid "Your feeds have been queued for refresh."
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "tiedosto vaaditaan"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""

View File

@@ -13,6 +13,14 @@ msgstr ""
"Language-Team: \n" "Language-Team: \n"
"Plural-Forms: \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 #: src/pages/app/FeedDetailsPage.tsx
msgid "<0>Complete syntax is available </0><1>here</1>." msgid "<0>Complete syntax is available </0><1>here</1>."
msgstr "<0>La syntaxe complète est disponible </0><1>ici</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>" msgid "<0>Have an account?</0><1>Log in!</1>"
msgstr "<0>Déjà un compte ?</0><1>Connectez-vous !</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 #: src/pages/auth/LoginPage.tsx
msgid "<0>Need an account?</0><1>Sign up!</1>" msgid "<0>Need an account?</0><1>Sign up!</1>"
msgstr "<0>Besoin d'un compte ?</0><1>Enregistrez-vous !</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/components/header/ProfileMenu.tsx
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "About" msgid "About"
msgstr "A propos" msgstr "À propos"
#: src/pages/admin/AdminUsersPage.tsx #: src/pages/admin/AdminUsersPage.tsx
msgid "Actions" msgid "Actions"
@@ -63,6 +71,10 @@ msgstr "Administrateur"
msgid "All" msgid "All"
msgstr "Tout" msgstr "Tout"
#: src/components/settings/DisplaySettings.tsx
msgid "Always scroll selected entry to the top of the page, even if it fits entirely on screen"
msgstr "Toujours remonter l'entrée sélectionnée en haut de la page, même si elle s'affiche complètement à l'écran"
#: src/pages/auth/PasswordRecoveryPage.tsx #: src/pages/auth/PasswordRecoveryPage.tsx
msgid "An email has been sent if this address was registered. Check your inbox." msgid "An email has been sent if this address was registered. Check your inbox."
msgstr "Un e-mail a été envoyé si cette adresse est enregistrée. Vérifiez votre boîte de réception." msgstr "Un e-mail a été envoyé si cette adresse est enregistrée. Vérifiez votre boîte de réception."
@@ -75,13 +87,17 @@ msgstr "Un fichier OPML est un fichier XML contenant des URL de flux et des cat
msgid "Analyze feed" msgid "Analyze feed"
msgstr "Analyser le flux" msgstr "Analyser le flux"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "Clé API"
#: src/pages/app/CategoryDetailsPage.tsx #: src/pages/app/CategoryDetailsPage.tsx
msgid "Are you sure you want to delete category <0>{categoryName}</0>?" 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 #: src/pages/admin/AdminUsersPage.tsx
msgid "Are you sure you want to delete user <0>{userName}</0> ?" 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 #: src/components/settings/ProfileSettings.tsx
msgid "Are you sure you want to delete your account? There's no turning back!" msgid "Are you sure you want to delete your account? There's no turning back!"
@@ -89,15 +105,15 @@ msgstr "Êtes-vous sûr de vouloir supprimer définitivement votre compte ?"
#: src/components/header/MarkAllAsReadButton.tsx #: src/components/header/MarkAllAsReadButton.tsx
msgid "Are you sure you want to mark all entries of <0>{sourceLabel}</0> as read?" 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 #: src/components/header/MarkAllAsReadButton.tsx
msgid "Are you sure you want to mark entries older than {threshold} days of <0>{sourceLabel}</0> as read?" 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 #: src/pages/app/FeedDetailsPage.tsx
msgid "Are you sure you want to unsubscribe from <0>{feedName}</0>?" 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 #: src/components/header/Header.tsx
msgid "Asc" msgid "Asc"
@@ -115,14 +131,19 @@ msgstr "Retour"
msgid "Back to log in" msgid "Back to log in"
msgstr "Retour à la connexion" msgstr "Retour à la connexion"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required for Chrome"
msgstr "L'extension navigateur est nécessaire sur Chrome"
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "Browser extentions" msgid "Browser extention"
msgstr "Extensions pour navigateurs" msgstr "Extension navigateur"
#: src/components/admin/UserEdit.tsx #: src/components/admin/UserEdit.tsx
#: src/components/content/add/AddCategory.tsx #: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx #: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx #: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx #: src/pages/admin/AdminUsersPage.tsx
@@ -151,16 +172,16 @@ msgid "Check that the feed is working"
msgstr "Vérifie que le flux fonctionne" msgstr "Vérifie que le flux fonctionne"
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>." msgid "CommaFeed browser extension version {browserExtensionVersion}."
msgstr "CommaFeed est un projet open-source. Les sources sont hébergées sur <0>GitHub</0>." msgstr "Extension CommaFeed pour navigateur version {browserExtensionVersion}."
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item" msgid "CommaFeed next unread item"
msgstr "CommaFeed prochain article non lu" msgstr "CommaFeed prochain article non lu"
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed version {version} ({revision})" msgid "CommaFeed version {version} ({revision})."
msgstr "CommaFeed version {version} ({revision})" msgstr "CommaFeed version {version} ({revision})."
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Compact" msgid "Compact"
@@ -184,7 +205,7 @@ msgstr "Cozy"
#: src/components/content/FeedEntryFooter.tsx #: src/components/content/FeedEntryFooter.tsx
msgid "Create tag: {query}" msgid "Create tag: {query}"
msgstr "Créer le tag: {query}" msgstr "Créer le marqueur : {query}"
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Ctrl" msgid "Ctrl"
@@ -194,6 +215,18 @@ msgstr "Ctrl"
msgid "Current password" msgid "Current password"
msgstr "Mot de passe actuel" 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 #: src/pages/admin/AdminUsersPage.tsx
msgid "Date created" msgid "Date created"
msgstr "Date de création" msgstr "Date de création"
@@ -202,15 +235,15 @@ msgstr "Date de création"
msgid "Delete" msgid "Delete"
msgstr "Effacer" 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
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
msgid "Delete account" msgid "Delete account"
msgstr "Effacer le compte" msgstr "Effacer le compte"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Effacer la catégorie"
#: src/pages/admin/AdminUsersPage.tsx #: src/pages/admin/AdminUsersPage.tsx
msgid "Delete user" msgid "Delete user"
msgstr "Effacer l'utilisateur" msgstr "Effacer l'utilisateur"
@@ -228,6 +261,11 @@ msgstr "Vue détaillée"
msgid "Display" msgid "Display"
msgstr "Affichage" msgstr "Affichage"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/DonatePage.tsx
msgid "Donate"
msgstr "Faites un don"
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
msgid "Download" msgid "Download"
msgstr "Télécharger" msgstr "Télécharger"
@@ -282,28 +320,33 @@ msgstr "Vue étendue"
msgid "Export your subscriptions and categories as an OPML file that can be imported in other feed reading services" 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" 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 "Options de l'extension"
#: 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/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
msgid "Feed URL" msgid "Feed URL"
msgstr "URL du flux" msgstr "URL du flux"
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "Nom du flux"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now" msgid "Fetch all my feeds now"
msgstr "" msgstr "Rafraîchir tous mes flux"
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "fichier requis"
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
msgid "Filtering expression" msgid "Filtering expression"
msgstr "Expression de filtrage" msgstr "Expression de filtrage"
#: src/pages/app/AboutPage.tsx
msgid "For those of you who prefer bitcoin, here is the address: {bitcoinAddress}"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Forgot password?" msgid "Forgot password?"
msgstr "Mot de passe oublié ?" msgstr "Mot de passe oublié ?"
@@ -324,17 +367,17 @@ msgstr "Générer une nouvelle clé API"
msgid "Generated feed url" msgid "Generated feed url"
msgstr "URL du flux généré" msgstr "URL du flux généré"
#: src/pages/app/AboutPage.tsx #: src/components/content/FeedEntryContextMenu.tsx
msgid "Go to the API documentation." msgid "Go to {0}"
msgstr "Aller à la documentation de l'API." msgstr "Aller à {0}"
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Go to the All view" msgid "Go to the All view"
msgstr "Aller à la catégorie Tout" msgstr "Aller à la catégorie Tout"
#: src/components/content/FeedEntryContextMenu.tsx #: src/pages/app/AboutPage.tsx
msgid "Go to {0}" msgid "Go to the API documentation."
msgstr "" msgstr "Aller à la documentation de l'API."
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "Goodies" msgid "Goodies"
@@ -352,10 +395,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." 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." msgstr "Si vous rencontrez un problème, merci de le signaler sur la page du projet GitHub."
#: src/pages/app/AboutPage.tsx
msgid "If you like this project, please consider a donation to support the developer and help cover the costs of keeping this website online."
msgstr "Si vous aimez ce projet, n'hésitez pas à faire un don pour encourager le développeur et aider à couvrir les coûts d'hébergement de la plate-forme."
#: src/components/content/add/ImportOpml.tsx #: src/components/content/add/ImportOpml.tsx
msgid "Import" msgid "Import"
msgstr "Importer" msgstr "Importer"
@@ -398,19 +437,19 @@ msgstr "Lien"
#: src/hooks/useAppLoading.ts #: src/hooks/useAppLoading.ts
msgid "Loading profile..." msgid "Loading profile..."
msgstr "Chargement du profil ..." msgstr "Chargement du profil..."
#: src/hooks/useAppLoading.ts #: src/hooks/useAppLoading.ts
msgid "Loading settings..." msgid "Loading settings..."
msgstr "Chargement des paramètres ..." msgstr "Chargement des paramètres..."
#: src/hooks/useAppLoading.ts #: src/hooks/useAppLoading.ts
msgid "Loading subscriptions..." msgid "Loading subscriptions..."
msgstr "Chargement des abonnements ..." msgstr "Chargement des abonnements..."
#: src/hooks/useAppLoading.ts #: src/hooks/useAppLoading.ts
msgid "Loading tags..." msgid "Loading tags..."
msgstr "Chargement des tags ..." msgstr "Chargement des marqueurs..."
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
@@ -424,7 +463,7 @@ msgstr "Déconnexion"
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Long press" msgid "Long press"
msgstr "" msgstr "Appui long"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
#: src/pages/admin/AdminUsersPage.tsx #: src/pages/admin/AdminUsersPage.tsx
@@ -456,7 +495,7 @@ msgstr "Métriques"
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Middle click" msgid "Middle click"
msgstr "" msgstr "Clic milieu"
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Move the page down" msgid "Move the page down"
@@ -491,6 +530,7 @@ msgid "Newest first"
msgstr "Plus récent en premier" msgstr "Plus récent en premier"
#: src/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
#: src/components/header/Header.tsx
msgid "Next" msgid "Next"
msgstr "Suivant" msgstr "Suivant"
@@ -504,25 +544,12 @@ msgstr "Bookmarklet vers le prochain article non lu"
#: src/pages/app/FeedEntriesPage.tsx #: src/pages/app/FeedEntriesPage.tsx
msgid "No more entries" msgid "No more entries"
msgstr "Plus d'entrées" msgstr "Fin de la liste"
#: src/components/sidebar/TreeSearch.tsx #: src/components/sidebar/TreeSearch.tsx
msgid "Nothing found" msgid "Nothing found"
msgstr "Aucun résultat" 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 #: src/pages/app/AboutPage.tsx
msgid "Oldest first" msgid "Oldest first"
msgstr "Du plus ancien au plus récent" msgstr "Du plus ancien au plus récent"
@@ -531,6 +558,10 @@ msgstr "Du plus ancien au plus récent"
msgid "Oops!" msgid "Oops!"
msgstr "Oups !" msgstr "Oups !"
#: src/components/header/Header.tsx
msgid "Open CommaFeed"
msgstr "Ouvrir CommaFeed"
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Open current entry in a new tab" msgid "Open current entry in a new tab"
msgstr "Ouvrir l'entrée actuelle dans un nouvel onglet" msgstr "Ouvrir l'entrée actuelle dans un nouvel onglet"
@@ -545,11 +576,11 @@ msgstr "Ouvrir le lien"
#: src/components/content/FeedEntryContextMenu.tsx #: src/components/content/FeedEntryContextMenu.tsx
msgid "Open link in new background tab" msgid "Open link in new background tab"
msgstr "" msgstr "Ouvrir le lien dans un nouvel onglet en arrière-plan"
#: src/components/content/FeedEntryContextMenu.tsx #: src/components/content/FeedEntryContextMenu.tsx
msgid "Open link in new tab" msgid "Open link in new tab"
msgstr "" msgstr "Ouvrir le lien dans un nouvel onglet"
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Open next entry" msgid "Open next entry"
@@ -563,6 +594,19 @@ msgstr "Ouvrir l'entrée précédente"
msgid "Open/close current entry" msgid "Open/close current entry"
msgstr "Ouvrir/fermer l'entrée actuelle" 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 #: src/pages/app/AboutPage.tsx
msgid "Order" msgid "Order"
msgstr "Ordre" msgstr "Ordre"
@@ -596,14 +640,14 @@ msgstr "Les mots de passe ne correspondent pas"
msgid "Position" msgid "Position"
msgstr "Position" msgstr "Position"
#: src/components/header/Header.tsx
msgid "Previous"
msgstr "Précédent"
#: src/pages/app/SettingsPage.tsx #: src/pages/app/SettingsPage.tsx
msgid "Profile" msgid "Profile"
msgstr "Profil" msgstr "Profil"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr "API REST"
#: src/pages/auth/PasswordRecoveryPage.tsx #: src/pages/auth/PasswordRecoveryPage.tsx
msgid "Recover password" msgid "Recover password"
msgstr "Récupérer le mot de passe" msgstr "Récupérer le mot de passe"
@@ -617,11 +661,16 @@ msgstr "Rafraîchir"
msgid "Registrations are closed on this CommaFeed instance" msgid "Registrations are closed on this CommaFeed instance"
msgstr "Les inscriptions sont fermées sur cette instance de CommaFeed" msgstr "Les inscriptions sont fermées sur cette instance de CommaFeed"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr "API REST"
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click" msgid "Right click"
msgstr "" msgstr "Clic droit"
#: src/components/admin/UserEdit.tsx #: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx #: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
@@ -674,11 +723,11 @@ msgstr "Maj"
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Show entry menu (desktop)" msgid "Show entry menu (desktop)"
msgstr "" msgstr "Afficher les options de l'entrée (ordinateur)"
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Show entry menu (mobile)" msgid "Show entry menu (mobile)"
msgstr "" msgstr "Afficher les options de l'entrée (mobile)"
#: src/components/settings/DisplaySettings.tsx #: src/components/settings/DisplaySettings.tsx
msgid "Show feeds and categories with no unread entries" msgid "Show feeds and categories with no unread entries"
@@ -719,14 +768,14 @@ msgstr "Favoris"
msgid "Subscribe" msgid "Subscribe"
msgstr "S'abonner" msgstr "S'abonner"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "URL pour s'abonner"
#: src/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
msgid "Subscribe to the feed" msgid "Subscribe to the feed"
msgstr "S'abonner au flux" msgstr "S'abonner au flux"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "URL pour s'abonner"
#: src/components/Alert.tsx #: src/components/Alert.tsx
msgid "Success" msgid "Success"
msgstr "Succès" msgstr "Succès"
@@ -736,16 +785,18 @@ msgid "Swipe header to the right"
msgstr "Faire glisser le titre vers la droite" msgstr "Faire glisser le titre vers la droite"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to dark theme" msgid "Switch to dark theme"
msgstr "Activer le mode sombre" msgstr "Activer le mode sombre"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to light theme" msgid "Switch to light theme"
msgstr "Activer le mode clair" msgstr "Activer le mode clair"
#: src/components/content/FeedEntryFooter.tsx #: src/components/content/FeedEntryFooter.tsx
msgid "Tags" msgid "Tags"
msgstr "Tags" msgstr "Marqueurs"
#: src/components/content/add/Subscribe.tsx #: 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." 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."
@@ -759,13 +810,17 @@ msgstr "Thème"
msgid "Toggle read status of current entry" msgid "Toggle read status of current entry"
msgstr "Marquer l'entrée actuelle comme lue/non lue" msgstr "Marquer l'entrée actuelle comme lue/non lue"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Toggle sidebar"
msgstr "Montrer/cacher la barre latérale"
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Try out CommaFeed with the demo account: demo/demo" msgid "Try out CommaFeed with the demo account: demo/demo"
msgstr "Essayez CommaFeed avec le compte de démonstration : demo/demo" msgstr "Essayez CommaFeed avec le compte de démonstration : demo/demo"
#: src/pages/WelcomePage.tsx #: src/pages/WelcomePage.tsx
msgid "Try the demo!" msgid "Try the demo!"
msgstr "" msgstr "Essayez la version de démonstration !"
#: src/components/header/Header.tsx #: src/components/header/Header.tsx
msgid "Unread" msgid "Unread"
@@ -781,15 +836,15 @@ msgstr "Retirer des favoris"
msgid "Unsubscribe" msgid "Unsubscribe"
msgstr "Se désabonner" msgstr "Se désabonner"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Nom"
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "User Name or E-mail" msgid "User Name or E-mail"
msgstr "Nom d'utilisateur ou e-mail" msgstr "Nom d'utilisateur ou e-mail"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Nom"
#: src/components/Alert.tsx #: src/components/Alert.tsx
msgid "Warning" msgid "Warning"
msgstr "Attention" msgstr "Attention"
@@ -804,12 +859,4 @@ msgstr "Vous n'avez pas encore d'abonnements. Pourquoi ne pas essayer d'en ajout
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh." msgid "Your feeds have been queued for refresh."
msgstr "" msgstr "Vos flux sont en cours de rafraîchissement"
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "fichier requis"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""

View File

@@ -13,6 +13,14 @@ msgstr ""
"Language-Team: \n" "Language-Team: \n"
"Plural-Forms: \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 #: src/pages/app/FeedDetailsPage.tsx
msgid "<0>Complete syntax is available </0><1>here</1>." msgid "<0>Complete syntax is available </0><1>here</1>."
msgstr "" msgstr ""
@@ -21,14 +29,14 @@ msgstr ""
msgid "<0>Have an account?</0><1>Log in!</1>" msgid "<0>Have an account?</0><1>Log in!</1>"
msgstr "<0>Tes unha conta?</0><1>Iniciar sesión!</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 #: src/pages/auth/LoginPage.tsx
msgid "<0>Need an account?</0><1>Sign up!</1>" msgid "<0>Need an account?</0><1>Sign up!</1>"
msgstr "<0>Necesitas unha conta?</0><1>Rexístrate!</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/components/header/ProfileMenu.tsx
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "About" msgid "About"
@@ -63,6 +71,10 @@ msgstr "Administración"
msgid "All" msgid "All"
msgstr "Todos" msgstr "Todos"
#: src/components/settings/DisplaySettings.tsx
msgid "Always scroll selected entry to the top of the page, even if it fits entirely on screen"
msgstr ""
#: src/pages/auth/PasswordRecoveryPage.tsx #: src/pages/auth/PasswordRecoveryPage.tsx
msgid "An email has been sent if this address was registered. Check your inbox." msgid "An email has been sent if this address was registered. Check your inbox."
msgstr "Enviouse un correo electrónico se este enderezo estaba rexistrado. " msgstr "Enviouse un correo electrónico se este enderezo estaba rexistrado. "
@@ -75,6 +87,10 @@ msgstr "Un ficheiro opml é un ficheiro XML que contén URL e categorías de fon
msgid "Analyze feed" msgid "Analyze feed"
msgstr "Analizar feed" msgstr "Analizar feed"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "chave API"
#: src/pages/app/CategoryDetailsPage.tsx #: src/pages/app/CategoryDetailsPage.tsx
msgid "Are you sure you want to delete category <0>{categoryName}</0>?" 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>?" msgstr "Estás seguro de que queres eliminar a categoría <0>{categoryName}</0>?"
@@ -115,14 +131,19 @@ msgstr "Atrás"
msgid "Back to log in" msgid "Back to log in"
msgstr "Volver para iniciar sesión" msgstr "Volver para iniciar sesión"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required for Chrome"
msgstr ""
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "Browser extentions" msgid "Browser extention"
msgstr "Extensións do navegador" msgstr ""
#: src/components/admin/UserEdit.tsx #: src/components/admin/UserEdit.tsx
#: src/components/content/add/AddCategory.tsx #: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx #: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx #: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx #: src/pages/admin/AdminUsersPage.tsx
@@ -151,16 +172,16 @@ msgid "Check that the feed is working"
msgstr "Comproba que a fonte funciona" msgstr "Comproba que a fonte funciona"
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>." msgid "CommaFeed browser extension version {browserExtensionVersion}."
msgstr "CommaFeed é un proxecto de código aberto. " msgstr ""
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item" msgid "CommaFeed next unread item"
msgstr "CommaFeed seguinte elemento non lido" msgstr "CommaFeed seguinte elemento non lido"
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed version {version} ({revision})" msgid "CommaFeed version {version} ({revision})."
msgstr "Versión de CommaFeed {versión} ({revisión})" msgstr ""
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Compact" msgid "Compact"
@@ -194,6 +215,18 @@ msgstr ""
msgid "Current password" msgid "Current password"
msgstr "Contrasinal actual" 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 #: src/pages/admin/AdminUsersPage.tsx
msgid "Date created" msgid "Date created"
msgstr "Data de creación" msgstr "Data de creación"
@@ -202,15 +235,15 @@ msgstr "Data de creación"
msgid "Delete" msgid "Delete"
msgstr "Eliminar" msgstr "Eliminar"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Eliminar categoría"
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
msgid "Delete account" msgid "Delete account"
msgstr "Eliminar conta" msgstr "Eliminar conta"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Eliminar categoría"
#: src/pages/admin/AdminUsersPage.tsx #: src/pages/admin/AdminUsersPage.tsx
msgid "Delete user" msgid "Delete user"
msgstr "Eliminar usuario" msgstr "Eliminar usuario"
@@ -228,6 +261,11 @@ msgstr ""
msgid "Display" msgid "Display"
msgstr "Exhibición" msgstr "Exhibición"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/DonatePage.tsx
msgid "Donate"
msgstr ""
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
msgid "Download" msgid "Download"
msgstr "Descargar" msgstr "Descargar"
@@ -282,28 +320,33 @@ msgstr "Ampliado"
msgid "Export your subscriptions and categories as an OPML file that can be imported in other feed reading services" 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" 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/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
msgid "Feed URL" msgid "Feed URL"
msgstr "URL da fonte" msgstr "URL da fonte"
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "Nome do feed"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now" msgid "Fetch all my feeds now"
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "é necesario o ficheiro"
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
msgid "Filtering expression" msgid "Filtering expression"
msgstr "Expresión de filtrado" msgstr "Expresión de filtrado"
#: src/pages/app/AboutPage.tsx
msgid "For those of you who prefer bitcoin, here is the address: {bitcoinAddress}"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Forgot password?" msgid "Forgot password?"
msgstr "Esqueceches o contrasinal?" msgstr "Esqueceches o contrasinal?"
@@ -324,17 +367,17 @@ msgstr "Xerar nova clave de API"
msgid "Generated feed url" msgid "Generated feed url"
msgstr "URL da fonte xerada" msgstr "URL da fonte xerada"
#: src/pages/app/AboutPage.tsx #: src/components/content/FeedEntryContextMenu.tsx
msgid "Go to the API documentation." msgid "Go to {0}"
msgstr "Ir á documentación da API." msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Go to the All view" msgid "Go to the All view"
msgstr "Ir á vista Todos" msgstr "Ir á vista Todos"
#: src/components/content/FeedEntryContextMenu.tsx #: src/pages/app/AboutPage.tsx
msgid "Go to {0}" msgid "Go to the API documentation."
msgstr "" msgstr "Ir á documentación da API."
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "Goodies" msgid "Goodies"
@@ -352,10 +395,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." 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." 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 #: src/components/content/add/ImportOpml.tsx
msgid "Import" msgid "Import"
msgstr "Importación" msgstr "Importación"
@@ -491,6 +530,7 @@ msgid "Newest first"
msgstr "o máis novo primeiro" msgstr "o máis novo primeiro"
#: src/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
#: src/components/header/Header.tsx
msgid "Next" msgid "Next"
msgstr "Seguinte" msgstr "Seguinte"
@@ -510,19 +550,6 @@ msgstr "Non hai máis entradas"
msgid "Nothing found" msgid "Nothing found"
msgstr "Non se atopou nada" 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 #: src/pages/app/AboutPage.tsx
msgid "Oldest first" msgid "Oldest first"
msgstr "O máis vello primeiro" msgstr "O máis vello primeiro"
@@ -531,6 +558,10 @@ msgstr "O máis vello primeiro"
msgid "Oops!" msgid "Oops!"
msgstr "Vaia!" msgstr "Vaia!"
#: src/components/header/Header.tsx
msgid "Open CommaFeed"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Open current entry in a new tab" msgid "Open current entry in a new tab"
msgstr "Abrir a entrada actual nunha nova pestana" msgstr "Abrir a entrada actual nunha nova pestana"
@@ -563,6 +594,19 @@ msgstr "Abrir entrada anterior"
msgid "Open/close current entry" msgid "Open/close current entry"
msgstr "Abrir/pechar entrada actual" 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 #: src/pages/app/AboutPage.tsx
msgid "Order" msgid "Order"
msgstr "Orde" msgstr "Orde"
@@ -596,14 +640,14 @@ msgstr "Os contrasinais non coinciden"
msgid "Position" msgid "Position"
msgstr "Posición" msgstr "Posición"
#: src/components/header/Header.tsx
msgid "Previous"
msgstr ""
#: src/pages/app/SettingsPage.tsx #: src/pages/app/SettingsPage.tsx
msgid "Profile" msgid "Profile"
msgstr "Perfil" msgstr "Perfil"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr "API REST"
#: src/pages/auth/PasswordRecoveryPage.tsx #: src/pages/auth/PasswordRecoveryPage.tsx
msgid "Recover password" msgid "Recover password"
msgstr "Recuperar o contrasinal" msgstr "Recuperar o contrasinal"
@@ -617,11 +661,16 @@ msgstr "Actualizar"
msgid "Registrations are closed on this CommaFeed instance" msgid "Registrations are closed on this CommaFeed instance"
msgstr "Os rexistros están pechados nesta instancia de CommaFeed" msgstr "Os rexistros están pechados nesta instancia de CommaFeed"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr "API REST"
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click" msgid "Right click"
msgstr "" msgstr ""
#: src/components/admin/UserEdit.tsx #: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx #: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
@@ -719,14 +768,14 @@ msgstr "estrela"
msgid "Subscribe" msgid "Subscribe"
msgstr "Subscríbete" msgstr "Subscríbete"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "URL de subscrición"
#: src/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
msgid "Subscribe to the feed" msgid "Subscribe to the feed"
msgstr "Subscríbete ao feed" msgstr "Subscríbete ao feed"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "URL de subscrición"
#: src/components/Alert.tsx #: src/components/Alert.tsx
msgid "Success" msgid "Success"
msgstr "Éxito" msgstr "Éxito"
@@ -736,10 +785,12 @@ msgid "Swipe header to the right"
msgstr "" msgstr ""
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to dark theme" msgid "Switch to dark theme"
msgstr "Cambiar ao tema escuro" msgstr "Cambiar ao tema escuro"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to light theme" msgid "Switch to light theme"
msgstr "Cambiar ao tema claro" msgstr "Cambiar ao tema claro"
@@ -759,6 +810,10 @@ msgstr "Tema"
msgid "Toggle read status of current entry" msgid "Toggle read status of current entry"
msgstr "alternar o estado de lectura da entrada actual" msgstr "alternar o estado de lectura da entrada actual"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Toggle sidebar"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Try out CommaFeed with the demo account: demo/demo" msgid "Try out CommaFeed with the demo account: demo/demo"
msgstr "Proba CommaFeed coa conta de demostración: demo/demo" msgstr "Proba CommaFeed coa conta de demostración: demo/demo"
@@ -781,15 +836,15 @@ msgstr "Desestrela"
msgid "Unsubscribe" msgid "Unsubscribe"
msgstr "Cancelar a subscrición" 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
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "User Name or E-mail" msgid "User Name or E-mail"
msgstr "Nome de usuario ou correo electrónico" msgstr "Nome de usuario ou correo electrónico"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Nome de usuario"
#: src/components/Alert.tsx #: src/components/Alert.tsx
msgid "Warning" msgid "Warning"
msgstr "Aviso" msgstr "Aviso"
@@ -805,11 +860,3 @@ msgstr "Aínda non tes ningunha subscrición. "
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh." msgid "Your feeds have been queued for refresh."
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "é necesario o ficheiro"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""

View File

@@ -13,6 +13,14 @@ msgstr ""
"Language-Team: \n" "Language-Team: \n"
"Plural-Forms: \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 #: src/pages/app/FeedDetailsPage.tsx
msgid "<0>Complete syntax is available </0><1>here</1>." msgid "<0>Complete syntax is available </0><1>here</1>."
msgstr "" msgstr ""
@@ -21,14 +29,14 @@ msgstr ""
msgid "<0>Have an account?</0><1>Log in!</1>" msgid "<0>Have an account?</0><1>Log in!</1>"
msgstr "<0>Van fiókja?</0><1>Jelentkezzen be!</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 #: src/pages/auth/LoginPage.tsx
msgid "<0>Need an account?</0><1>Sign up!</1>" msgid "<0>Need an account?</0><1>Sign up!</1>"
msgstr "<0>Fiókra van szüksége?</0><1>Regisztráljon!</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/components/header/ProfileMenu.tsx
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "About" msgid "About"
@@ -63,6 +71,10 @@ msgstr ""
msgid "All" msgid "All"
msgstr "Mind" msgstr "Mind"
#: src/components/settings/DisplaySettings.tsx
msgid "Always scroll selected entry to the top of the page, even if it fits entirely on screen"
msgstr ""
#: src/pages/auth/PasswordRecoveryPage.tsx #: src/pages/auth/PasswordRecoveryPage.tsx
msgid "An email has been sent if this address was registered. Check your inbox." msgid "An email has been sent if this address was registered. Check your inbox."
msgstr "E-mailt küldtünk, ha ez a cím regisztrálva volt. " msgstr "E-mailt küldtünk, ha ez a cím regisztrálva volt. "
@@ -75,6 +87,10 @@ msgstr "Az opml-fájl olyan XML-fájl, amely feed URL-címeket és kategóriáka
msgid "Analyze feed" msgid "Analyze feed"
msgstr "Hírcsatorna elemzése" msgstr "Hírcsatorna elemzése"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "API kulcs"
#: src/pages/app/CategoryDetailsPage.tsx #: src/pages/app/CategoryDetailsPage.tsx
msgid "Are you sure you want to delete category <0>{categoryName}</0>?" 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?" msgstr "Biztosan törölni szeretné a(z) <0>{categoryName}</0> kategóriát?"
@@ -115,14 +131,19 @@ msgstr "Vissza"
msgid "Back to log in" msgid "Back to log in"
msgstr "Vissza a bejelentkezéshez" msgstr "Vissza a bejelentkezéshez"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required for Chrome"
msgstr ""
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "Browser extentions" msgid "Browser extention"
msgstr "Böngészőbővítések" msgstr ""
#: src/components/admin/UserEdit.tsx #: src/components/admin/UserEdit.tsx
#: src/components/content/add/AddCategory.tsx #: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx #: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx #: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx #: src/pages/admin/AdminUsersPage.tsx
@@ -151,7 +172,7 @@ msgid "Check that the feed is working"
msgstr "Ellenőrizze, hogy a feed működik-e" msgstr "Ellenőrizze, hogy a feed működik-e"
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>." msgid "CommaFeed browser extension version {browserExtensionVersion}."
msgstr "" msgstr ""
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
@@ -159,8 +180,8 @@ msgid "CommaFeed next unread item"
msgstr "CommaFeed következő olvasatlan elem" msgstr "CommaFeed következő olvasatlan elem"
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed version {version} ({revision})" msgid "CommaFeed version {version} ({revision})."
msgstr "CommaFeed verzió {version} ({revision})" msgstr ""
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Compact" msgid "Compact"
@@ -194,6 +215,18 @@ msgstr ""
msgid "Current password" msgid "Current password"
msgstr "Jelenlegi jelszó" 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 #: src/pages/admin/AdminUsersPage.tsx
msgid "Date created" msgid "Date created"
msgstr "Létrehozás dátuma" msgstr "Létrehozás dátuma"
@@ -202,15 +235,15 @@ msgstr "Létrehozás dátuma"
msgid "Delete" msgid "Delete"
msgstr "Törlés" 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
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
msgid "Delete account" msgid "Delete account"
msgstr "Fiók törlése" 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 #: src/pages/admin/AdminUsersPage.tsx
msgid "Delete user" msgid "Delete user"
msgstr "Felhasználó törlése" msgstr "Felhasználó törlése"
@@ -228,6 +261,11 @@ msgstr ""
msgid "Display" msgid "Display"
msgstr "Kijelző" msgstr "Kijelző"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/DonatePage.tsx
msgid "Donate"
msgstr ""
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
msgid "Download" msgid "Download"
msgstr "Letöltés" msgstr "Letöltés"
@@ -282,28 +320,33 @@ msgstr "Kiterjesztve"
msgid "Export your subscriptions and categories as an OPML file that can be imported in other feed reading services" 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" 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/content/add/Subscribe.tsx #: src/components/header/Header.tsx
#: src/components/content/add/Subscribe.tsx #: src/pages/WelcomePage.tsx
#: src/pages/app/FeedDetailsPage.tsx msgid "Extension options"
msgid "Feed URL"
msgstr "" msgstr ""
#: src/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
msgid "Feed name" msgid "Feed name"
msgstr "Hírcsatorna neve" 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/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now" msgid "Fetch all my feeds now"
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "fájl szükséges"
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
msgid "Filtering expression" msgid "Filtering expression"
msgstr "Szűrő kifejezés" msgstr "Szűrő kifejezés"
#: src/pages/app/AboutPage.tsx
msgid "For those of you who prefer bitcoin, here is the address: {bitcoinAddress}"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Forgot password?" msgid "Forgot password?"
msgstr "Elfelejtette a jelszavát?" msgstr "Elfelejtette a jelszavát?"
@@ -324,17 +367,17 @@ msgstr "Új API-kulcs létrehozása"
msgid "Generated feed url" msgid "Generated feed url"
msgstr "Hírcsatorna generált URL-je" msgstr "Hírcsatorna generált URL-je"
#: src/pages/app/AboutPage.tsx #: src/components/content/FeedEntryContextMenu.tsx
msgid "Go to the API documentation." msgid "Go to {0}"
msgstr "Nyissa meg az API dokumentációját." msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Go to the All view" msgid "Go to the All view"
msgstr "Lépjen az Összes nézetre" msgstr "Lépjen az Összes nézetre"
#: src/components/content/FeedEntryContextMenu.tsx #: src/pages/app/AboutPage.tsx
msgid "Go to {0}" msgid "Go to the API documentation."
msgstr "" msgstr "Nyissa meg az API dokumentációját."
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "Goodies" msgid "Goodies"
@@ -352,10 +395,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." 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." 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 #: src/components/content/add/ImportOpml.tsx
msgid "Import" msgid "Import"
msgstr "Importálás" msgstr "Importálás"
@@ -491,6 +530,7 @@ msgid "Newest first"
msgstr "A legújabbak először" msgstr "A legújabbak először"
#: src/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
#: src/components/header/Header.tsx
msgid "Next" msgid "Next"
msgstr "Következő" msgstr "Következő"
@@ -510,19 +550,6 @@ msgstr "Nincs több bejegyzés"
msgid "Nothing found" msgid "Nothing found"
msgstr "Semmi sem található" 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 #: src/pages/app/AboutPage.tsx
msgid "Oldest first" msgid "Oldest first"
msgstr "A legidősebb első" msgstr "A legidősebb első"
@@ -531,6 +558,10 @@ msgstr "A legidősebb első"
msgid "Oops!" msgid "Oops!"
msgstr "Hoppá!" msgstr "Hoppá!"
#: src/components/header/Header.tsx
msgid "Open CommaFeed"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Open current entry in a new tab" msgid "Open current entry in a new tab"
msgstr "Az aktuális bejegyzés megnyitása új lapon" msgstr "Az aktuális bejegyzés megnyitása új lapon"
@@ -563,6 +594,19 @@ msgstr "Nyissa meg az előző bejegyzést"
msgid "Open/close current entry" msgid "Open/close current entry"
msgstr "Aktuális bejegyzés megnyitása/zárása" 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 #: src/pages/app/AboutPage.tsx
msgid "Order" msgid "Order"
msgstr "Rendelés" msgstr "Rendelés"
@@ -596,14 +640,14 @@ msgstr "A jelszavak nem egyeznek"
msgid "Position" msgid "Position"
msgstr "Pozíció" msgstr "Pozíció"
#: src/components/header/Header.tsx
msgid "Previous"
msgstr ""
#: src/pages/app/SettingsPage.tsx #: src/pages/app/SettingsPage.tsx
msgid "Profile" msgid "Profile"
msgstr "Profil" msgstr "Profil"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/pages/auth/PasswordRecoveryPage.tsx #: src/pages/auth/PasswordRecoveryPage.tsx
msgid "Recover password" msgid "Recover password"
msgstr "Jelszó helyreállítása" msgstr "Jelszó helyreállítása"
@@ -617,11 +661,16 @@ msgstr "Frissítés"
msgid "Registrations are closed on this CommaFeed instance" msgid "Registrations are closed on this CommaFeed instance"
msgstr "A regisztrációk le vannak zárva ezen a CommaFeed példányon" msgstr "A regisztrációk le vannak zárva ezen a CommaFeed példányon"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click" msgid "Right click"
msgstr "" msgstr ""
#: src/components/admin/UserEdit.tsx #: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx #: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
@@ -719,14 +768,14 @@ msgstr "Csillaggal megjelölve"
msgid "Subscribe" msgid "Subscribe"
msgstr "Feliratkozás" msgstr "Feliratkozás"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "Feliratkozási URL"
#: src/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
msgid "Subscribe to the feed" msgid "Subscribe to the feed"
msgstr "Feliratkozás a hírfolyamra" msgstr "Feliratkozás a hírfolyamra"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "Feliratkozási URL"
#: src/components/Alert.tsx #: src/components/Alert.tsx
msgid "Success" msgid "Success"
msgstr "Siker" msgstr "Siker"
@@ -736,10 +785,12 @@ msgid "Swipe header to the right"
msgstr "" msgstr ""
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to dark theme" msgid "Switch to dark theme"
msgstr "Váltás sötét témára" msgstr "Váltás sötét témára"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to light theme" msgid "Switch to light theme"
msgstr "Váltás világos témára" msgstr "Váltás világos témára"
@@ -759,6 +810,10 @@ msgstr "Téma"
msgid "Toggle read status of current entry" msgid "Toggle read status of current entry"
msgstr "Az aktuális bejegyzés olvasási állapotának váltása" msgstr "Az aktuális bejegyzés olvasási állapotának váltása"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Toggle sidebar"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Try out CommaFeed with the demo account: demo/demo" msgid "Try out CommaFeed with the demo account: demo/demo"
msgstr "Próbálja ki a CommaFeed-et a demo fiókkal: demo/demo" msgstr "Próbálja ki a CommaFeed-et a demo fiókkal: demo/demo"
@@ -781,15 +836,15 @@ msgstr ""
msgid "Unsubscribe" msgid "Unsubscribe"
msgstr "Leiratkozás" 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
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "User Name or E-mail" msgid "User Name or E-mail"
msgstr "Felhasználói név vagy e-mail cím" 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 #: src/components/Alert.tsx
msgid "Warning" msgid "Warning"
msgstr "Figyelem" msgstr "Figyelem"
@@ -805,11 +860,3 @@ msgstr "Még nincs előfizetése. "
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh." msgid "Your feeds have been queued for refresh."
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "fájl szükséges"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""

View File

@@ -13,6 +13,14 @@ msgstr ""
"Language-Team: \n" "Language-Team: \n"
"Plural-Forms: \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 #: src/pages/app/FeedDetailsPage.tsx
msgid "<0>Complete syntax is available </0><1>here</1>." msgid "<0>Complete syntax is available </0><1>here</1>."
msgstr "" msgstr ""
@@ -21,14 +29,14 @@ msgstr ""
msgid "<0>Have an account?</0><1>Log in!</1>" msgid "<0>Have an account?</0><1>Log in!</1>"
msgstr "<0>Punya akun?</0><1>Masuk!</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 #: src/pages/auth/LoginPage.tsx
msgid "<0>Need an account?</0><1>Sign up!</1>" msgid "<0>Need an account?</0><1>Sign up!</1>"
msgstr "<0>Butuh akun?</0><1>Daftar!</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/components/header/ProfileMenu.tsx
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "About" msgid "About"
@@ -63,6 +71,10 @@ msgstr ""
msgid "All" msgid "All"
msgstr "Semua" msgstr "Semua"
#: src/components/settings/DisplaySettings.tsx
msgid "Always scroll selected entry to the top of the page, even if it fits entirely on screen"
msgstr ""
#: src/pages/auth/PasswordRecoveryPage.tsx #: src/pages/auth/PasswordRecoveryPage.tsx
msgid "An email has been sent if this address was registered. Check your inbox." msgid "An email has been sent if this address was registered. Check your inbox."
msgstr "Email telah dikirim jika alamat ini terdaftar. " msgstr "Email telah dikirim jika alamat ini terdaftar. "
@@ -75,6 +87,10 @@ msgstr "File opml adalah file XML yang berisi URL dan kategori feed. "
msgid "Analyze feed" msgid "Analyze feed"
msgstr "Analisis umpan" msgstr "Analisis umpan"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "kunci API"
#: src/pages/app/CategoryDetailsPage.tsx #: src/pages/app/CategoryDetailsPage.tsx
msgid "Are you sure you want to delete category <0>{categoryName}</0>?" msgid "Are you sure you want to delete category <0>{categoryName}</0>?"
msgstr "Anda yakin ingin menghapus kategori <0>{categoryName}</0>?" msgstr "Anda yakin ingin menghapus kategori <0>{categoryName}</0>?"
@@ -115,14 +131,19 @@ msgstr "Kembali"
msgid "Back to log in" msgid "Back to log in"
msgstr "Kembali untuk masuk" msgstr "Kembali untuk masuk"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required for Chrome"
msgstr ""
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "Browser extentions" msgid "Browser extention"
msgstr "Ekstensi peramban" msgstr ""
#: src/components/admin/UserEdit.tsx #: src/components/admin/UserEdit.tsx
#: src/components/content/add/AddCategory.tsx #: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx #: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx #: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx #: src/pages/admin/AdminUsersPage.tsx
@@ -151,16 +172,16 @@ msgid "Check that the feed is working"
msgstr "Periksa apakah umpannya berfungsi" msgstr "Periksa apakah umpannya berfungsi"
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>." msgid "CommaFeed browser extension version {browserExtensionVersion}."
msgstr "CommaFeed adalah proyek sumber terbuka. " msgstr ""
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item" msgid "CommaFeed next unread item"
msgstr "CommaFeed item yang belum dibaca berikutnya" msgstr "CommaFeed item yang belum dibaca berikutnya"
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed version {version} ({revision})" msgid "CommaFeed version {version} ({revision})."
msgstr "CommaFeed versi {versi} ({revisi})" msgstr ""
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Compact" msgid "Compact"
@@ -194,6 +215,18 @@ msgstr ""
msgid "Current password" msgid "Current password"
msgstr "Kata sandi saat ini" 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 #: src/pages/admin/AdminUsersPage.tsx
msgid "Date created" msgid "Date created"
msgstr "Tanggal dibuat" msgstr "Tanggal dibuat"
@@ -202,15 +235,15 @@ msgstr "Tanggal dibuat"
msgid "Delete" msgid "Delete"
msgstr "Hapus" msgstr "Hapus"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Hapus Kategori"
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
msgid "Delete account" msgid "Delete account"
msgstr "Hapus akun" msgstr "Hapus akun"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Hapus Kategori"
#: src/pages/admin/AdminUsersPage.tsx #: src/pages/admin/AdminUsersPage.tsx
msgid "Delete user" msgid "Delete user"
msgstr "Hapus pengguna" msgstr "Hapus pengguna"
@@ -228,6 +261,11 @@ msgstr ""
msgid "Display" msgid "Display"
msgstr "Tampilan" msgstr "Tampilan"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/DonatePage.tsx
msgid "Donate"
msgstr ""
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
msgid "Download" msgid "Download"
msgstr "Unduh" msgstr "Unduh"
@@ -282,28 +320,33 @@ msgstr "Diperluas"
msgid "Export your subscriptions and categories as an OPML file that can be imported in other feed reading services" 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" 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/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
msgid "Feed URL" msgid "Feed URL"
msgstr "URL Umpan" msgstr "URL Umpan"
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "Nama umpan"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now" msgid "Fetch all my feeds now"
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "file diperlukan"
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
msgid "Filtering expression" msgid "Filtering expression"
msgstr "Memfilter ekspresi" msgstr "Memfilter ekspresi"
#: src/pages/app/AboutPage.tsx
msgid "For those of you who prefer bitcoin, here is the address: {bitcoinAddress}"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Forgot password?" msgid "Forgot password?"
msgstr "Lupa kata sandi?" msgstr "Lupa kata sandi?"
@@ -324,17 +367,17 @@ msgstr "Buat kunci API baru"
msgid "Generated feed url" msgid "Generated feed url"
msgstr "Url umpan yang dihasilkan" msgstr "Url umpan yang dihasilkan"
#: src/pages/app/AboutPage.tsx #: src/components/content/FeedEntryContextMenu.tsx
msgid "Go to the API documentation." msgid "Go to {0}"
msgstr "Buka dokumentasi API." msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Go to the All view" msgid "Go to the All view"
msgstr "Pergi ke tampilan Semua" msgstr "Pergi ke tampilan Semua"
#: src/components/content/FeedEntryContextMenu.tsx #: src/pages/app/AboutPage.tsx
msgid "Go to {0}" msgid "Go to the API documentation."
msgstr "" msgstr "Buka dokumentasi API."
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "Goodies" msgid "Goodies"
@@ -352,10 +395,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." 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." 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 #: src/components/content/add/ImportOpml.tsx
msgid "Import" msgid "Import"
msgstr "Impor" msgstr "Impor"
@@ -491,6 +530,7 @@ msgid "Newest first"
msgstr "Terbaru dulu" msgstr "Terbaru dulu"
#: src/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
#: src/components/header/Header.tsx
msgid "Next" msgid "Next"
msgstr "Selanjutnya" msgstr "Selanjutnya"
@@ -510,19 +550,6 @@ msgstr "Tidak ada entri lagi"
msgid "Nothing found" msgid "Nothing found"
msgstr "Tidak ada yang ditemukan" 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 #: src/pages/app/AboutPage.tsx
msgid "Oldest first" msgid "Oldest first"
msgstr "Tertua dulu" msgstr "Tertua dulu"
@@ -531,6 +558,10 @@ msgstr "Tertua dulu"
msgid "Oops!" msgid "Oops!"
msgstr "Ups!" msgstr "Ups!"
#: src/components/header/Header.tsx
msgid "Open CommaFeed"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Open current entry in a new tab" msgid "Open current entry in a new tab"
msgstr "Buka entri saat ini di tab baru" msgstr "Buka entri saat ini di tab baru"
@@ -563,6 +594,19 @@ msgstr "Buka entri sebelumnya"
msgid "Open/close current entry" msgid "Open/close current entry"
msgstr "Buka/tutup entri saat ini" 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 #: src/pages/app/AboutPage.tsx
msgid "Order" msgid "Order"
msgstr "Pesan" msgstr "Pesan"
@@ -596,14 +640,14 @@ msgstr "Kata sandi tidak cocok"
msgid "Position" msgid "Position"
msgstr "Posisi" msgstr "Posisi"
#: src/components/header/Header.tsx
msgid "Previous"
msgstr ""
#: src/pages/app/SettingsPage.tsx #: src/pages/app/SettingsPage.tsx
msgid "Profile" msgid "Profile"
msgstr "Profil" msgstr "Profil"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/pages/auth/PasswordRecoveryPage.tsx #: src/pages/auth/PasswordRecoveryPage.tsx
msgid "Recover password" msgid "Recover password"
msgstr "Pulihkan kata sandi" msgstr "Pulihkan kata sandi"
@@ -617,11 +661,16 @@ msgstr "Segarkan"
msgid "Registrations are closed on this CommaFeed instance" msgid "Registrations are closed on this CommaFeed instance"
msgstr "Pendaftaran ditutup pada instans CommaFeed ini" msgstr "Pendaftaran ditutup pada instans CommaFeed ini"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click" msgid "Right click"
msgstr "" msgstr ""
#: src/components/admin/UserEdit.tsx #: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx #: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
@@ -719,14 +768,14 @@ msgstr "Berbintang"
msgid "Subscribe" msgid "Subscribe"
msgstr "Berlangganan" msgstr "Berlangganan"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "URL Berlangganan"
#: src/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
msgid "Subscribe to the feed" msgid "Subscribe to the feed"
msgstr "Berlangganan umpan" msgstr "Berlangganan umpan"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "URL Berlangganan"
#: src/components/Alert.tsx #: src/components/Alert.tsx
msgid "Success" msgid "Success"
msgstr "Sukses" msgstr "Sukses"
@@ -736,10 +785,12 @@ msgid "Swipe header to the right"
msgstr "" msgstr ""
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to dark theme" msgid "Switch to dark theme"
msgstr "Beralih ke tema gelap" msgstr "Beralih ke tema gelap"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to light theme" msgid "Switch to light theme"
msgstr "Beralih ke tema terang" msgstr "Beralih ke tema terang"
@@ -759,6 +810,10 @@ msgstr "Tema"
msgid "Toggle read status of current entry" msgid "Toggle read status of current entry"
msgstr "Beralih status baca entri saat ini" msgstr "Beralih status baca entri saat ini"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Toggle sidebar"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Try out CommaFeed with the demo account: demo/demo" msgid "Try out CommaFeed with the demo account: demo/demo"
msgstr "Cobalah CommaFeed dengan akun demo: demo/demo" msgstr "Cobalah CommaFeed dengan akun demo: demo/demo"
@@ -781,15 +836,15 @@ msgstr "Hapus bintang"
msgid "Unsubscribe" msgid "Unsubscribe"
msgstr "Berhenti berlangganan" msgstr "Berhenti berlangganan"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Nama pengguna"
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "User Name or E-mail" msgid "User Name or E-mail"
msgstr "Nama Pengguna atau Email" msgstr "Nama Pengguna atau Email"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Nama pengguna"
#: src/components/Alert.tsx #: src/components/Alert.tsx
msgid "Warning" msgid "Warning"
msgstr "Peringatan" msgstr "Peringatan"
@@ -805,11 +860,3 @@ msgstr "Anda belum memiliki langganan. "
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh." msgid "Your feeds have been queued for refresh."
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "file diperlukan"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""

View File

@@ -13,6 +13,14 @@ msgstr ""
"Language-Team: \n" "Language-Team: \n"
"Plural-Forms: \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 #: src/pages/app/FeedDetailsPage.tsx
msgid "<0>Complete syntax is available </0><1>here</1>." msgid "<0>Complete syntax is available </0><1>here</1>."
msgstr "" msgstr ""
@@ -21,14 +29,14 @@ msgstr ""
msgid "<0>Have an account?</0><1>Log in!</1>" msgid "<0>Have an account?</0><1>Log in!</1>"
msgstr "<0>Hai un account?</0><1>Accedi!</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 #: src/pages/auth/LoginPage.tsx
msgid "<0>Need an account?</0><1>Sign up!</1>" msgid "<0>Need an account?</0><1>Sign up!</1>"
msgstr "<0>Hai bisogno di un account?</0><1>Registrati!</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/components/header/ProfileMenu.tsx
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "About" msgid "About"
@@ -63,6 +71,10 @@ msgstr "Ammin"
msgid "All" msgid "All"
msgstr "Tutto" msgstr "Tutto"
#: src/components/settings/DisplaySettings.tsx
msgid "Always scroll selected entry to the top of the page, even if it fits entirely on screen"
msgstr ""
#: src/pages/auth/PasswordRecoveryPage.tsx #: src/pages/auth/PasswordRecoveryPage.tsx
msgid "An email has been sent if this address was registered. Check your inbox." msgid "An email has been sent if this address was registered. Check your inbox."
msgstr "È stata inviata un'e-mail se questo indirizzo è stato registrato. " msgstr "È stata inviata un'e-mail se questo indirizzo è stato registrato. "
@@ -75,6 +87,10 @@ msgstr "Un file opml è un file XML contenente URL e categorie di feed. "
msgid "Analyze feed" msgid "Analyze feed"
msgstr "Analizza feed" msgstr "Analizza feed"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "Chiave API"
#: src/pages/app/CategoryDetailsPage.tsx #: src/pages/app/CategoryDetailsPage.tsx
msgid "Are you sure you want to delete category <0>{categoryName}</0>?" msgid "Are you sure you want to delete category <0>{categoryName}</0>?"
msgstr "Sei sicuro di voler eliminare la categoria <0>{categoryName}</0>?" msgstr "Sei sicuro di voler eliminare la categoria <0>{categoryName}</0>?"
@@ -115,14 +131,19 @@ msgstr "Indietro"
msgid "Back to log in" msgid "Back to log in"
msgstr "Torna per accedere" msgstr "Torna per accedere"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required for Chrome"
msgstr ""
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "Browser extentions" msgid "Browser extention"
msgstr "Estensioni del browser" msgstr ""
#: src/components/admin/UserEdit.tsx #: src/components/admin/UserEdit.tsx
#: src/components/content/add/AddCategory.tsx #: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx #: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx #: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx #: src/pages/admin/AdminUsersPage.tsx
@@ -151,16 +172,16 @@ msgid "Check that the feed is working"
msgstr "Verifica che il feed funzioni" msgstr "Verifica che il feed funzioni"
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>." msgid "CommaFeed browser extension version {browserExtensionVersion}."
msgstr "CommaFeed è un progetto open source. " msgstr ""
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item" msgid "CommaFeed next unread item"
msgstr "CommaFeed successivo elemento non letto" msgstr "CommaFeed successivo elemento non letto"
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed version {version} ({revision})" msgid "CommaFeed version {version} ({revision})."
msgstr "Versione CommaFeed {versione} ({revisione})" msgstr ""
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Compact" msgid "Compact"
@@ -194,6 +215,18 @@ msgstr "ctrl"
msgid "Current password" msgid "Current password"
msgstr "Password attuale" 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 #: src/pages/admin/AdminUsersPage.tsx
msgid "Date created" msgid "Date created"
msgstr "Data di creazione" msgstr "Data di creazione"
@@ -202,15 +235,15 @@ msgstr "Data di creazione"
msgid "Delete" msgid "Delete"
msgstr "Elimina" msgstr "Elimina"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Elimina categoria"
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
msgid "Delete account" msgid "Delete account"
msgstr "Elimina account" msgstr "Elimina account"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Elimina categoria"
#: src/pages/admin/AdminUsersPage.tsx #: src/pages/admin/AdminUsersPage.tsx
msgid "Delete user" msgid "Delete user"
msgstr "Elimina utente" msgstr "Elimina utente"
@@ -228,6 +261,11 @@ msgstr ""
msgid "Display" msgid "Display"
msgstr "Visualizzazione" msgstr "Visualizzazione"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/DonatePage.tsx
msgid "Donate"
msgstr ""
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
msgid "Download" msgid "Download"
msgstr "Scarica" msgstr "Scarica"
@@ -282,28 +320,33 @@ msgstr "Espanso"
msgid "Export your subscriptions and categories as an OPML file that can be imported in other feed reading services" 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" 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/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
msgid "Feed URL" msgid "Feed URL"
msgstr "URL feed" msgstr "URL feed"
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "Nome del feed"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now" msgid "Fetch all my feeds now"
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "è richiesto il file"
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
msgid "Filtering expression" msgid "Filtering expression"
msgstr "Espressione filtrante" msgstr "Espressione filtrante"
#: src/pages/app/AboutPage.tsx
msgid "For those of you who prefer bitcoin, here is the address: {bitcoinAddress}"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Forgot password?" msgid "Forgot password?"
msgstr "Password dimenticata?" msgstr "Password dimenticata?"
@@ -324,17 +367,17 @@ msgstr "Genera nuova chiave API"
msgid "Generated feed url" msgid "Generated feed url"
msgstr "URL feed generato" msgstr "URL feed generato"
#: src/pages/app/AboutPage.tsx #: src/components/content/FeedEntryContextMenu.tsx
msgid "Go to the API documentation." msgid "Go to {0}"
msgstr "Vai alla documentazione dell'API." msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Go to the All view" msgid "Go to the All view"
msgstr "Vai alla vista Tutto" msgstr "Vai alla vista Tutto"
#: src/components/content/FeedEntryContextMenu.tsx #: src/pages/app/AboutPage.tsx
msgid "Go to {0}" msgid "Go to the API documentation."
msgstr "" msgstr "Vai alla documentazione dell'API."
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "Goodies" msgid "Goodies"
@@ -352,10 +395,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." 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." 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 #: src/components/content/add/ImportOpml.tsx
msgid "Import" msgid "Import"
msgstr "Importa" msgstr "Importa"
@@ -491,6 +530,7 @@ msgid "Newest first"
msgstr "Il più recente prima" msgstr "Il più recente prima"
#: src/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
#: src/components/header/Header.tsx
msgid "Next" msgid "Next"
msgstr "Avanti" msgstr "Avanti"
@@ -510,19 +550,6 @@ msgstr "Non ci sono più voci"
msgid "Nothing found" msgid "Nothing found"
msgstr "Non è stato trovato nulla" 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 #: src/pages/app/AboutPage.tsx
msgid "Oldest first" msgid "Oldest first"
msgstr "Il più vecchio prima" msgstr "Il più vecchio prima"
@@ -531,6 +558,10 @@ msgstr "Il più vecchio prima"
msgid "Oops!" msgid "Oops!"
msgstr "Ops!" msgstr "Ops!"
#: src/components/header/Header.tsx
msgid "Open CommaFeed"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Open current entry in a new tab" msgid "Open current entry in a new tab"
msgstr "Apri la voce corrente in una nuova scheda" msgstr "Apri la voce corrente in una nuova scheda"
@@ -563,6 +594,19 @@ msgstr "Apri voce precedente"
msgid "Open/close current entry" msgid "Open/close current entry"
msgstr "Apri/chiudi voce corrente" 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 #: src/pages/app/AboutPage.tsx
msgid "Order" msgid "Order"
msgstr "Ordine" msgstr "Ordine"
@@ -596,14 +640,14 @@ msgstr "Le password non corrispondono"
msgid "Position" msgid "Position"
msgstr "Posizione" msgstr "Posizione"
#: src/components/header/Header.tsx
msgid "Previous"
msgstr ""
#: src/pages/app/SettingsPage.tsx #: src/pages/app/SettingsPage.tsx
msgid "Profile" msgid "Profile"
msgstr "Profilo" msgstr "Profilo"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr "API REST"
#: src/pages/auth/PasswordRecoveryPage.tsx #: src/pages/auth/PasswordRecoveryPage.tsx
msgid "Recover password" msgid "Recover password"
msgstr "Recupera password" msgstr "Recupera password"
@@ -617,11 +661,16 @@ msgstr "Aggiorna"
msgid "Registrations are closed on this CommaFeed instance" msgid "Registrations are closed on this CommaFeed instance"
msgstr "Le registrazioni sono chiuse su questa istanza CommaFeed" msgstr "Le registrazioni sono chiuse su questa istanza CommaFeed"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr "API REST"
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click" msgid "Right click"
msgstr "" msgstr ""
#: src/components/admin/UserEdit.tsx #: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx #: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
@@ -719,14 +768,14 @@ msgstr "Speciali"
msgid "Subscribe" msgid "Subscribe"
msgstr "Iscriviti" msgstr "Iscriviti"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "URL di iscrizione"
#: src/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
msgid "Subscribe to the feed" msgid "Subscribe to the feed"
msgstr "Iscriviti al feed" msgstr "Iscriviti al feed"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "URL di iscrizione"
#: src/components/Alert.tsx #: src/components/Alert.tsx
msgid "Success" msgid "Success"
msgstr "Successo" msgstr "Successo"
@@ -736,10 +785,12 @@ msgid "Swipe header to the right"
msgstr "" msgstr ""
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to dark theme" msgid "Switch to dark theme"
msgstr "Passa al tema scuro" msgstr "Passa al tema scuro"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to light theme" msgid "Switch to light theme"
msgstr "Passa al tema della luce" msgstr "Passa al tema della luce"
@@ -759,6 +810,10 @@ msgstr "Tema"
msgid "Toggle read status of current entry" msgid "Toggle read status of current entry"
msgstr "Commuta lo stato di lettura della voce corrente" msgstr "Commuta lo stato di lettura della voce corrente"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Toggle sidebar"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Try out CommaFeed with the demo account: demo/demo" msgid "Try out CommaFeed with the demo account: demo/demo"
msgstr "Prova CommaFeed con il conto demo: demo/demo" msgstr "Prova CommaFeed con il conto demo: demo/demo"
@@ -781,15 +836,15 @@ msgstr "Elimina le stelle"
msgid "Unsubscribe" msgid "Unsubscribe"
msgstr "Annulla iscrizione" msgstr "Annulla iscrizione"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Nome utente"
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "User Name or E-mail" msgid "User Name or E-mail"
msgstr "Nome utente o e-mail" msgstr "Nome utente o e-mail"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Nome utente"
#: src/components/Alert.tsx #: src/components/Alert.tsx
msgid "Warning" msgid "Warning"
msgstr "Avviso" msgstr "Avviso"
@@ -805,11 +860,3 @@ msgstr "Non hai ancora abbonamenti. "
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh." msgid "Your feeds have been queued for refresh."
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "è richiesto il file"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""

View File

@@ -13,6 +13,14 @@ msgstr ""
"Language-Team: \n" "Language-Team: \n"
"Plural-Forms: \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 #: src/pages/app/FeedDetailsPage.tsx
msgid "<0>Complete syntax is available </0><1>here</1>." msgid "<0>Complete syntax is available </0><1>here</1>."
msgstr "" msgstr ""
@@ -21,14 +29,14 @@ msgstr ""
msgid "<0>Have an account?</0><1>Log in!</1>" msgid "<0>Have an account?</0><1>Log in!</1>"
msgstr "<0>アカウントをお持ちですか?</0><1>ログインしてください!</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 #: src/pages/auth/LoginPage.tsx
msgid "<0>Need an account?</0><1>Sign up!</1>" msgid "<0>Need an account?</0><1>Sign up!</1>"
msgstr "<0>アカウントが必要ですか?</0><1>サインアップ!</1>" msgstr "<0>アカウントが必要ですか?</0><1>サインアップ!</1>"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "APIキー"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "About" msgid "About"
@@ -63,6 +71,10 @@ msgstr "管理人"
msgid "All" msgid "All"
msgstr "全員" msgstr "全員"
#: src/components/settings/DisplaySettings.tsx
msgid "Always scroll selected entry to the top of the page, even if it fits entirely on screen"
msgstr ""
#: src/pages/auth/PasswordRecoveryPage.tsx #: src/pages/auth/PasswordRecoveryPage.tsx
msgid "An email has been sent if this address was registered. Check your inbox." msgid "An email has been sent if this address was registered. Check your inbox."
msgstr "このアドレスが登録されていれば、メールが送信されました。" msgstr "このアドレスが登録されていれば、メールが送信されました。"
@@ -75,6 +87,10 @@ msgstr "opml ファイルは、フィードの URL とカテゴリを含む XML
msgid "Analyze feed" msgid "Analyze feed"
msgstr "フィードを分析する" msgstr "フィードを分析する"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "APIキー"
#: src/pages/app/CategoryDetailsPage.tsx #: src/pages/app/CategoryDetailsPage.tsx
msgid "Are you sure you want to delete category <0>{categoryName}</0>?" msgid "Are you sure you want to delete category <0>{categoryName}</0>?"
msgstr "カテゴリ <0>{categoryName}</0> を削除してもよろしいですか?" msgstr "カテゴリ <0>{categoryName}</0> を削除してもよろしいですか?"
@@ -115,14 +131,19 @@ msgstr "裏"
msgid "Back to log in" msgid "Back to log in"
msgstr "ログインに戻る" msgstr "ログインに戻る"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required for Chrome"
msgstr ""
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "Browser extentions" msgid "Browser extention"
msgstr "ブラウザ拡張機能" msgstr ""
#: src/components/admin/UserEdit.tsx #: src/components/admin/UserEdit.tsx
#: src/components/content/add/AddCategory.tsx #: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx #: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx #: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx #: src/pages/admin/AdminUsersPage.tsx
@@ -151,16 +172,16 @@ msgid "Check that the feed is working"
msgstr "フィードが動作していることを確認してください" msgstr "フィードが動作していることを確認してください"
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>." msgid "CommaFeed browser extension version {browserExtensionVersion}."
msgstr "CommaFeed はオープンソース プロジェクトです。" msgstr ""
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item" msgid "CommaFeed next unread item"
msgstr "次の未読アイテムをカンマフィード" msgstr "次の未読アイテムをカンマフィード"
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed version {version} ({revision})" msgid "CommaFeed version {version} ({revision})."
msgstr "コンマフィードのバージョン {version} ({revision})" msgstr ""
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Compact" msgid "Compact"
@@ -194,6 +215,18 @@ msgstr "コントロール"
msgid "Current password" msgid "Current password"
msgstr "現在のパスワード" 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 #: src/pages/admin/AdminUsersPage.tsx
msgid "Date created" msgid "Date created"
msgstr "作成日" msgstr "作成日"
@@ -202,15 +235,15 @@ msgstr "作成日"
msgid "Delete" msgid "Delete"
msgstr "削除" msgstr "削除"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "カテゴリを削除"
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
msgid "Delete account" msgid "Delete account"
msgstr "アカウント削除" msgstr "アカウント削除"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "カテゴリを削除"
#: src/pages/admin/AdminUsersPage.tsx #: src/pages/admin/AdminUsersPage.tsx
msgid "Delete user" msgid "Delete user"
msgstr "ユーザーの削除" msgstr "ユーザーの削除"
@@ -228,6 +261,11 @@ msgstr ""
msgid "Display" msgid "Display"
msgstr "ディスプレイ" msgstr "ディスプレイ"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/DonatePage.tsx
msgid "Donate"
msgstr ""
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
msgid "Download" msgid "Download"
msgstr "ダウンロード" msgstr "ダウンロード"
@@ -282,28 +320,33 @@ msgstr "拡張"
msgid "Export your subscriptions and categories as an OPML file that can be imported in other feed reading services" msgid "Export your subscriptions and categories as an OPML file that can be imported in other feed reading services"
msgstr "サブスクリプションとカテゴリを、他のフィード読み取りサービスにインポートできる OPML ファイルとしてエクスポートします" 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/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
msgid "Feed URL" msgid "Feed URL"
msgstr "フィード URL" msgstr "フィード URL"
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "フィード名"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now" msgid "Fetch all my feeds now"
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "ファイルが必要です"
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
msgid "Filtering expression" msgid "Filtering expression"
msgstr "フィルタリング式" msgstr "フィルタリング式"
#: src/pages/app/AboutPage.tsx
msgid "For those of you who prefer bitcoin, here is the address: {bitcoinAddress}"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Forgot password?" msgid "Forgot password?"
msgstr "パスワードをお忘れですか?" msgstr "パスワードをお忘れですか?"
@@ -324,17 +367,17 @@ msgstr "新しい API キーを生成する"
msgid "Generated feed url" msgid "Generated feed url"
msgstr "生成されたフィード URL" msgstr "生成されたフィード URL"
#: src/pages/app/AboutPage.tsx #: src/components/content/FeedEntryContextMenu.tsx
msgid "Go to the API documentation." msgid "Go to {0}"
msgstr "API ドキュメントに移動します。" msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Go to the All view" msgid "Go to the All view"
msgstr "すべてのビューに移動" msgstr "すべてのビューに移動"
#: src/components/content/FeedEntryContextMenu.tsx #: src/pages/app/AboutPage.tsx
msgid "Go to {0}" msgid "Go to the API documentation."
msgstr "" msgstr "API ドキュメントに移動します。"
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "Goodies" msgid "Goodies"
@@ -352,10 +395,6 @@ msgstr "空でない場合は、'true' または 'false' に評価される式
msgid "If you encounter an issue, please report it on the issues page of the GitHub project." msgid "If you encounter an issue, please report it on the issues page of the GitHub project."
msgstr "問題が発生した場合は、GitHub プロジェクトの問題ページで報告してください。" 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 #: src/components/content/add/ImportOpml.tsx
msgid "Import" msgid "Import"
msgstr "インポート" msgstr "インポート"
@@ -491,6 +530,7 @@ msgid "Newest first"
msgstr "最新順" msgstr "最新順"
#: src/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
#: src/components/header/Header.tsx
msgid "Next" msgid "Next"
msgstr "次へ" msgstr "次へ"
@@ -510,19 +550,6 @@ msgstr "これ以上エントリはありません"
msgid "Nothing found" msgid "Nothing found"
msgstr "何も見つかりませんでした" 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 #: src/pages/app/AboutPage.tsx
msgid "Oldest first" msgid "Oldest first"
msgstr "古い順" msgstr "古い順"
@@ -531,6 +558,10 @@ msgstr "古い順"
msgid "Oops!" msgid "Oops!"
msgstr "おっと!" msgstr "おっと!"
#: src/components/header/Header.tsx
msgid "Open CommaFeed"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Open current entry in a new tab" msgid "Open current entry in a new tab"
msgstr "現在のエントリを新しいタブで開く" msgstr "現在のエントリを新しいタブで開く"
@@ -563,6 +594,19 @@ msgstr "前のエントリを開く"
msgid "Open/close current entry" msgid "Open/close current entry"
msgstr "現在のエントリを開く/閉じる" 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 #: src/pages/app/AboutPage.tsx
msgid "Order" msgid "Order"
msgstr "オーダー" msgstr "オーダー"
@@ -596,14 +640,14 @@ msgstr "パスワードが一致しません"
msgid "Position" msgid "Position"
msgstr "位置" msgstr "位置"
#: src/components/header/Header.tsx
msgid "Previous"
msgstr ""
#: src/pages/app/SettingsPage.tsx #: src/pages/app/SettingsPage.tsx
msgid "Profile" msgid "Profile"
msgstr "プロフィール" msgstr "プロフィール"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/pages/auth/PasswordRecoveryPage.tsx #: src/pages/auth/PasswordRecoveryPage.tsx
msgid "Recover password" msgid "Recover password"
msgstr "パスワードの回復" msgstr "パスワードの回復"
@@ -617,11 +661,16 @@ msgstr "リフレッシュ"
msgid "Registrations are closed on this CommaFeed instance" msgid "Registrations are closed on this CommaFeed instance"
msgstr "この CommaFeed インスタンスの登録は終了しています" msgstr "この CommaFeed インスタンスの登録は終了しています"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click" msgid "Right click"
msgstr "" msgstr ""
#: src/components/admin/UserEdit.tsx #: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx #: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
@@ -719,14 +768,14 @@ msgstr "スター付き"
msgid "Subscribe" msgid "Subscribe"
msgstr "購読する" msgstr "購読する"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "購読URL"
#: src/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
msgid "Subscribe to the feed" msgid "Subscribe to the feed"
msgstr "フィードを購読する" msgstr "フィードを購読する"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "購読URL"
#: src/components/Alert.tsx #: src/components/Alert.tsx
msgid "Success" msgid "Success"
msgstr "成功" msgstr "成功"
@@ -736,10 +785,12 @@ msgid "Swipe header to the right"
msgstr "" msgstr ""
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to dark theme" msgid "Switch to dark theme"
msgstr "ダークテーマに切り替え" msgstr "ダークテーマに切り替え"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to light theme" msgid "Switch to light theme"
msgstr "ライトテーマに切り替え" msgstr "ライトテーマに切り替え"
@@ -759,6 +810,10 @@ msgstr "テーマ"
msgid "Toggle read status of current entry" msgid "Toggle read status of current entry"
msgstr "現在のエントリの読み取りステータスを切り替えます" msgstr "現在のエントリの読み取りステータスを切り替えます"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Toggle sidebar"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Try out CommaFeed with the demo account: demo/demo" msgid "Try out CommaFeed with the demo account: demo/demo"
msgstr "デモアカウントで CommaFeed を試す: demo/demo" msgstr "デモアカウントで CommaFeed を試す: demo/demo"
@@ -781,15 +836,15 @@ msgstr "スターを外す"
msgid "Unsubscribe" msgid "Unsubscribe"
msgstr "退会" msgstr "退会"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "ユーザー名"
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "User Name or E-mail" msgid "User Name or E-mail"
msgstr "ユーザー名またはメールアドレス" msgstr "ユーザー名またはメールアドレス"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "ユーザー名"
#: src/components/Alert.tsx #: src/components/Alert.tsx
msgid "Warning" msgid "Warning"
msgstr "警告" msgstr "警告"
@@ -805,11 +860,3 @@ msgstr "まだサブスクリプションがありません。"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh." msgid "Your feeds have been queued for refresh."
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "ファイルが必要です"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""

View File

@@ -13,6 +13,14 @@ msgstr ""
"Language-Team: \n" "Language-Team: \n"
"Plural-Forms: \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 #: src/pages/app/FeedDetailsPage.tsx
msgid "<0>Complete syntax is available </0><1>here</1>." msgid "<0>Complete syntax is available </0><1>here</1>."
msgstr "" msgstr ""
@@ -21,14 +29,14 @@ msgstr ""
msgid "<0>Have an account?</0><1>Log in!</1>" msgid "<0>Have an account?</0><1>Log in!</1>"
msgstr "<0>계정이 있습니까?</0><1>로그인하세요!</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 #: src/pages/auth/LoginPage.tsx
msgid "<0>Need an account?</0><1>Sign up!</1>" msgid "<0>Need an account?</0><1>Sign up!</1>"
msgstr "<0>계정이 필요하십니까?</0><1>가입하세요!</1>" msgstr "<0>계정이 필요하십니까?</0><1>가입하세요!</1>"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "API 키"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "About" msgid "About"
@@ -63,6 +71,10 @@ msgstr "관리자"
msgid "All" msgid "All"
msgstr "전체" msgstr "전체"
#: src/components/settings/DisplaySettings.tsx
msgid "Always scroll selected entry to the top of the page, even if it fits entirely on screen"
msgstr ""
#: src/pages/auth/PasswordRecoveryPage.tsx #: src/pages/auth/PasswordRecoveryPage.tsx
msgid "An email has been sent if this address was registered. Check your inbox." msgid "An email has been sent if this address was registered. Check your inbox."
msgstr "이 주소가 등록된 경우 이메일이 전송되었습니다. " msgstr "이 주소가 등록된 경우 이메일이 전송되었습니다. "
@@ -75,6 +87,10 @@ msgstr "opml 파일은 피드 URL과 카테고리를 포함하는 XML 파일입
msgid "Analyze feed" msgid "Analyze feed"
msgstr "피드 분석" msgstr "피드 분석"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "API 키"
#: src/pages/app/CategoryDetailsPage.tsx #: src/pages/app/CategoryDetailsPage.tsx
msgid "Are you sure you want to delete category <0>{categoryName}</0>?" msgid "Are you sure you want to delete category <0>{categoryName}</0>?"
msgstr "<0>{categoryName}</0> 카테고리를 삭제하시겠습니까?" msgstr "<0>{categoryName}</0> 카테고리를 삭제하시겠습니까?"
@@ -115,14 +131,19 @@ msgstr "뒤로"
msgid "Back to log in" msgid "Back to log in"
msgstr "로그인으로 돌아가기" msgstr "로그인으로 돌아가기"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required for Chrome"
msgstr ""
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "Browser extentions" msgid "Browser extention"
msgstr "브라우저 확장" msgstr ""
#: src/components/admin/UserEdit.tsx #: src/components/admin/UserEdit.tsx
#: src/components/content/add/AddCategory.tsx #: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx #: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx #: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx #: src/pages/admin/AdminUsersPage.tsx
@@ -151,16 +172,16 @@ msgid "Check that the feed is working"
msgstr "피드가 작동하는지 확인" msgstr "피드가 작동하는지 확인"
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>." msgid "CommaFeed browser extension version {browserExtensionVersion}."
msgstr "CommaFeed는 오픈 소스 프로젝트입니다. " msgstr ""
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item" msgid "CommaFeed next unread item"
msgstr "다음 읽지 않은 항목을 쉼표로 피드" msgstr "다음 읽지 않은 항목을 쉼표로 피드"
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed version {version} ({revision})" msgid "CommaFeed version {version} ({revision})."
msgstr "쉼표 피드 버전 {버전}({개정})" msgstr ""
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Compact" msgid "Compact"
@@ -194,6 +215,18 @@ msgstr "컨트롤"
msgid "Current password" msgid "Current password"
msgstr "현재 비밀번호" 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 #: src/pages/admin/AdminUsersPage.tsx
msgid "Date created" msgid "Date created"
msgstr "생성 날짜" msgstr "생성 날짜"
@@ -202,15 +235,15 @@ msgstr "생성 날짜"
msgid "Delete" msgid "Delete"
msgstr "삭제" msgstr "삭제"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "카테고리 삭제"
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
msgid "Delete account" msgid "Delete account"
msgstr "계정 삭제" msgstr "계정 삭제"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "카테고리 삭제"
#: src/pages/admin/AdminUsersPage.tsx #: src/pages/admin/AdminUsersPage.tsx
msgid "Delete user" msgid "Delete user"
msgstr "사용자 삭제" msgstr "사용자 삭제"
@@ -228,6 +261,11 @@ msgstr ""
msgid "Display" msgid "Display"
msgstr "디스플레이" msgstr "디스플레이"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/DonatePage.tsx
msgid "Donate"
msgstr ""
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
msgid "Download" msgid "Download"
msgstr "다운로드" msgstr "다운로드"
@@ -282,28 +320,33 @@ msgstr "확장"
msgid "Export your subscriptions and categories as an OPML file that can be imported in other feed reading services" msgid "Export your subscriptions and categories as an OPML file that can be imported in other feed reading services"
msgstr "구독 및 카테고리를 다른 피드 읽기 서비스에서 가져올 수 있는 OPML 파일로 내보내기" 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/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
msgid "Feed URL" msgid "Feed URL"
msgstr "피드 URL" msgstr "피드 URL"
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "피드 이름"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now" msgid "Fetch all my feeds now"
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "파일이 필요합니다"
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
msgid "Filtering expression" msgid "Filtering expression"
msgstr "필터링 표현식" msgstr "필터링 표현식"
#: src/pages/app/AboutPage.tsx
msgid "For those of you who prefer bitcoin, here is the address: {bitcoinAddress}"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Forgot password?" msgid "Forgot password?"
msgstr "비밀번호를 잊으셨나요?" msgstr "비밀번호를 잊으셨나요?"
@@ -324,17 +367,17 @@ msgstr "새 API 키 생성"
msgid "Generated feed url" msgid "Generated feed url"
msgstr "생성된 피드 URL" msgstr "생성된 피드 URL"
#: src/pages/app/AboutPage.tsx #: src/components/content/FeedEntryContextMenu.tsx
msgid "Go to the API documentation." msgid "Go to {0}"
msgstr "API 문서로 이동합니다." msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Go to the All view" msgid "Go to the All view"
msgstr "전체 보기로 이동" msgstr "전체 보기로 이동"
#: src/components/content/FeedEntryContextMenu.tsx #: src/pages/app/AboutPage.tsx
msgid "Go to {0}" msgid "Go to the API documentation."
msgstr "" msgstr "API 문서로 이동합니다."
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "Goodies" msgid "Goodies"
@@ -352,10 +395,6 @@ msgstr "비어 있지 않은 경우 'true' 또는 'false'로 평가되는 표현
msgid "If you encounter an issue, please report it on the issues page of the GitHub project." msgid "If you encounter an issue, please report it on the issues page of the GitHub project."
msgstr "문제가 발생하면 GitHub 프로젝트의 문제 페이지에서 보고하세요." 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 #: src/components/content/add/ImportOpml.tsx
msgid "Import" msgid "Import"
msgstr "가져오기" msgstr "가져오기"
@@ -491,6 +530,7 @@ msgid "Newest first"
msgstr "최신순" msgstr "최신순"
#: src/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
#: src/components/header/Header.tsx
msgid "Next" msgid "Next"
msgstr "다음" msgstr "다음"
@@ -510,19 +550,6 @@ msgstr "더 이상 항목이 없습니다"
msgid "Nothing found" msgid "Nothing found"
msgstr "아무것도 찾을 수 없습니다" 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 #: src/pages/app/AboutPage.tsx
msgid "Oldest first" msgid "Oldest first"
msgstr "가장 오래된 것부터" msgstr "가장 오래된 것부터"
@@ -531,6 +558,10 @@ msgstr "가장 오래된 것부터"
msgid "Oops!" msgid "Oops!"
msgstr "앗!" msgstr "앗!"
#: src/components/header/Header.tsx
msgid "Open CommaFeed"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Open current entry in a new tab" msgid "Open current entry in a new tab"
msgstr "새 탭에서 현재 항목 열기" msgstr "새 탭에서 현재 항목 열기"
@@ -563,6 +594,19 @@ msgstr "이전 항목 열기"
msgid "Open/close current entry" msgid "Open/close current entry"
msgstr "현재 항목 열기/닫기" 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 #: src/pages/app/AboutPage.tsx
msgid "Order" msgid "Order"
msgstr "주문" msgstr "주문"
@@ -596,14 +640,14 @@ msgstr "비밀번호가 일치하지 않습니다"
msgid "Position" msgid "Position"
msgstr "위치" msgstr "위치"
#: src/components/header/Header.tsx
msgid "Previous"
msgstr ""
#: src/pages/app/SettingsPage.tsx #: src/pages/app/SettingsPage.tsx
msgid "Profile" msgid "Profile"
msgstr "프로필" msgstr "프로필"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/pages/auth/PasswordRecoveryPage.tsx #: src/pages/auth/PasswordRecoveryPage.tsx
msgid "Recover password" msgid "Recover password"
msgstr "비밀번호 복구" msgstr "비밀번호 복구"
@@ -617,11 +661,16 @@ msgstr "새로 고침"
msgid "Registrations are closed on this CommaFeed instance" msgid "Registrations are closed on this CommaFeed instance"
msgstr "이 CommaFeed 인스턴스에 대한 등록이 마감되었습니다." msgstr "이 CommaFeed 인스턴스에 대한 등록이 마감되었습니다."
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click" msgid "Right click"
msgstr "" msgstr ""
#: src/components/admin/UserEdit.tsx #: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx #: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
@@ -719,14 +768,14 @@ msgstr "별표"
msgid "Subscribe" msgid "Subscribe"
msgstr "구독" msgstr "구독"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "구독 URL"
#: src/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
msgid "Subscribe to the feed" msgid "Subscribe to the feed"
msgstr "피드 구독" msgstr "피드 구독"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "구독 URL"
#: src/components/Alert.tsx #: src/components/Alert.tsx
msgid "Success" msgid "Success"
msgstr "성공" msgstr "성공"
@@ -736,10 +785,12 @@ msgid "Swipe header to the right"
msgstr "" msgstr ""
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to dark theme" msgid "Switch to dark theme"
msgstr "어두운 테마로 전환" msgstr "어두운 테마로 전환"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to light theme" msgid "Switch to light theme"
msgstr "밝은 테마로 전환" msgstr "밝은 테마로 전환"
@@ -759,6 +810,10 @@ msgstr "테마"
msgid "Toggle read status of current entry" msgid "Toggle read status of current entry"
msgstr "현재 항목의 읽기 상태 전환" msgstr "현재 항목의 읽기 상태 전환"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Toggle sidebar"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Try out CommaFeed with the demo account: demo/demo" msgid "Try out CommaFeed with the demo account: demo/demo"
msgstr "데모 계정으로 CommaFeed를 사용해 보세요: demo/demo" msgstr "데모 계정으로 CommaFeed를 사용해 보세요: demo/demo"
@@ -781,15 +836,15 @@ msgstr "별표 제거"
msgid "Unsubscribe" msgid "Unsubscribe"
msgstr "구독 취소" msgstr "구독 취소"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "사용자 이름"
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "User Name or E-mail" msgid "User Name or E-mail"
msgstr "사용자 이름 또는 이메일" msgstr "사용자 이름 또는 이메일"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "사용자 이름"
#: src/components/Alert.tsx #: src/components/Alert.tsx
msgid "Warning" msgid "Warning"
msgstr "경고" msgstr "경고"
@@ -805,11 +860,3 @@ msgstr "아직 구독이 없습니다. "
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh." msgid "Your feeds have been queued for refresh."
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "파일이 필요합니다"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""

View File

@@ -13,6 +13,14 @@ msgstr ""
"Language-Team: \n" "Language-Team: \n"
"Plural-Forms: \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 #: src/pages/app/FeedDetailsPage.tsx
msgid "<0>Complete syntax is available </0><1>here</1>." msgid "<0>Complete syntax is available </0><1>here</1>."
msgstr "" msgstr ""
@@ -21,14 +29,14 @@ msgstr ""
msgid "<0>Have an account?</0><1>Log in!</1>" msgid "<0>Have an account?</0><1>Log in!</1>"
msgstr "<0>Ada akaun?</0><1>Log masuk!</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 #: src/pages/auth/LoginPage.tsx
msgid "<0>Need an account?</0><1>Sign up!</1>" msgid "<0>Need an account?</0><1>Sign up!</1>"
msgstr "<0>Perlukan akaun?</0><1>Daftar!</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/components/header/ProfileMenu.tsx
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "About" msgid "About"
@@ -63,6 +71,10 @@ msgstr "Pentadbir"
msgid "All" msgid "All"
msgstr "Semua" msgstr "Semua"
#: src/components/settings/DisplaySettings.tsx
msgid "Always scroll selected entry to the top of the page, even if it fits entirely on screen"
msgstr ""
#: src/pages/auth/PasswordRecoveryPage.tsx #: src/pages/auth/PasswordRecoveryPage.tsx
msgid "An email has been sent if this address was registered. Check your inbox." msgid "An email has been sent if this address was registered. Check your inbox."
msgstr "E-mel telah dihantar jika alamat ini didaftarkan. " msgstr "E-mel telah dihantar jika alamat ini didaftarkan. "
@@ -75,6 +87,10 @@ msgstr "Fail opml ialah fail XML yang mengandungi URL suapan dan kategori. "
msgid "Analyze feed" msgid "Analyze feed"
msgstr "Menganalisis suapan" msgstr "Menganalisis suapan"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "Kunci API"
#: src/pages/app/CategoryDetailsPage.tsx #: src/pages/app/CategoryDetailsPage.tsx
msgid "Are you sure you want to delete category <0>{categoryName}</0>?" msgid "Are you sure you want to delete category <0>{categoryName}</0>?"
msgstr "Adakah anda pasti mahu memadamkan kategori <0>{categoryName}</0>?" msgstr "Adakah anda pasti mahu memadamkan kategori <0>{categoryName}</0>?"
@@ -115,14 +131,19 @@ msgstr "Kembali"
msgid "Back to log in" msgid "Back to log in"
msgstr "Kembali untuk log masuk" msgstr "Kembali untuk log masuk"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required for Chrome"
msgstr ""
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "Browser extentions" msgid "Browser extention"
msgstr "Peluasan penyemak imbas" msgstr ""
#: src/components/admin/UserEdit.tsx #: src/components/admin/UserEdit.tsx
#: src/components/content/add/AddCategory.tsx #: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx #: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx #: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx #: src/pages/admin/AdminUsersPage.tsx
@@ -151,16 +172,16 @@ msgid "Check that the feed is working"
msgstr "Semak sama ada suapan berfungsi" msgstr "Semak sama ada suapan berfungsi"
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>." msgid "CommaFeed browser extension version {browserExtensionVersion}."
msgstr "CommaFeed ialah projek sumber terbuka. " msgstr ""
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item" msgid "CommaFeed next unread item"
msgstr "CommaFeed item belum dibaca seterusnya" msgstr "CommaFeed item belum dibaca seterusnya"
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed version {version} ({revision})" msgid "CommaFeed version {version} ({revision})."
msgstr "Versi CommaFeed {versi} ({semakan})" msgstr ""
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Compact" msgid "Compact"
@@ -194,6 +215,18 @@ msgstr ""
msgid "Current password" msgid "Current password"
msgstr "Kata laluan semasa" 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 #: src/pages/admin/AdminUsersPage.tsx
msgid "Date created" msgid "Date created"
msgstr "Tarikh dibuat" msgstr "Tarikh dibuat"
@@ -202,15 +235,15 @@ msgstr "Tarikh dibuat"
msgid "Delete" msgid "Delete"
msgstr "Padam" msgstr "Padam"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Padamkan Kategori"
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
msgid "Delete account" msgid "Delete account"
msgstr "Padam akaun" msgstr "Padam akaun"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Padamkan Kategori"
#: src/pages/admin/AdminUsersPage.tsx #: src/pages/admin/AdminUsersPage.tsx
msgid "Delete user" msgid "Delete user"
msgstr "Padam pengguna" msgstr "Padam pengguna"
@@ -228,6 +261,11 @@ msgstr ""
msgid "Display" msgid "Display"
msgstr "Paparan" msgstr "Paparan"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/DonatePage.tsx
msgid "Donate"
msgstr ""
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
msgid "Download" msgid "Download"
msgstr "Muat turun" msgstr "Muat turun"
@@ -282,28 +320,33 @@ msgstr "Dikembangkan"
msgid "Export your subscriptions and categories as an OPML file that can be imported in other feed reading services" 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" 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/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
msgid "Feed URL" msgid "Feed URL"
msgstr "URL Suapan" msgstr "URL Suapan"
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "Nama suapan"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now" msgid "Fetch all my feeds now"
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "fail diperlukan"
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
msgid "Filtering expression" msgid "Filtering expression"
msgstr "Ungkapan penapisan" msgstr "Ungkapan penapisan"
#: src/pages/app/AboutPage.tsx
msgid "For those of you who prefer bitcoin, here is the address: {bitcoinAddress}"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Forgot password?" msgid "Forgot password?"
msgstr "Lupa kata laluan?" msgstr "Lupa kata laluan?"
@@ -324,17 +367,17 @@ msgstr "Jana kunci API baharu"
msgid "Generated feed url" msgid "Generated feed url"
msgstr "Url suapan yang dijana" msgstr "Url suapan yang dijana"
#: src/pages/app/AboutPage.tsx #: src/components/content/FeedEntryContextMenu.tsx
msgid "Go to the API documentation." msgid "Go to {0}"
msgstr "Pergi ke dokumentasi API." msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Go to the All view" msgid "Go to the All view"
msgstr "Pergi ke paparan Semua" msgstr "Pergi ke paparan Semua"
#: src/components/content/FeedEntryContextMenu.tsx #: src/pages/app/AboutPage.tsx
msgid "Go to {0}" msgid "Go to the API documentation."
msgstr "" msgstr "Pergi ke dokumentasi API."
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "Goodies" msgid "Goodies"
@@ -352,10 +395,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." 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." 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 #: src/components/content/add/ImportOpml.tsx
msgid "Import" msgid "Import"
msgstr "" msgstr ""
@@ -491,6 +530,7 @@ msgid "Newest first"
msgstr "Terbaharu dahulu" msgstr "Terbaharu dahulu"
#: src/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
#: src/components/header/Header.tsx
msgid "Next" msgid "Next"
msgstr "Seterusnya" msgstr "Seterusnya"
@@ -510,19 +550,6 @@ msgstr "Tiada lagi penyertaan"
msgid "Nothing found" msgid "Nothing found"
msgstr "Tiada apa-apa dijumpai" 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 #: src/pages/app/AboutPage.tsx
msgid "Oldest first" msgid "Oldest first"
msgstr "Tertua dahulu" msgstr "Tertua dahulu"
@@ -531,6 +558,10 @@ msgstr "Tertua dahulu"
msgid "Oops!" msgid "Oops!"
msgstr "Aduh!" msgstr "Aduh!"
#: src/components/header/Header.tsx
msgid "Open CommaFeed"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Open current entry in a new tab" msgid "Open current entry in a new tab"
msgstr "Buka entri semasa dalam tab baharu" msgstr "Buka entri semasa dalam tab baharu"
@@ -563,6 +594,19 @@ msgstr "Buka entri sebelumnya"
msgid "Open/close current entry" msgid "Open/close current entry"
msgstr "Buka/tutup entri semasa" 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 #: src/pages/app/AboutPage.tsx
msgid "Order" msgid "Order"
msgstr "Perintah" msgstr "Perintah"
@@ -596,14 +640,14 @@ msgstr "Kata laluan tidak sepadan"
msgid "Position" msgid "Position"
msgstr "Kedudukan" msgstr "Kedudukan"
#: src/components/header/Header.tsx
msgid "Previous"
msgstr ""
#: src/pages/app/SettingsPage.tsx #: src/pages/app/SettingsPage.tsx
msgid "Profile" msgid "Profile"
msgstr "Profil" msgstr "Profil"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr "REHAT API"
#: src/pages/auth/PasswordRecoveryPage.tsx #: src/pages/auth/PasswordRecoveryPage.tsx
msgid "Recover password" msgid "Recover password"
msgstr "Pulihkan kata laluan" msgstr "Pulihkan kata laluan"
@@ -617,11 +661,16 @@ msgstr "Muat semula"
msgid "Registrations are closed on this CommaFeed instance" msgid "Registrations are closed on this CommaFeed instance"
msgstr "Pendaftaran ditutup pada contoh CommaFeed ini" msgstr "Pendaftaran ditutup pada contoh CommaFeed ini"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr "REHAT API"
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click" msgid "Right click"
msgstr "" msgstr ""
#: src/components/admin/UserEdit.tsx #: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx #: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
@@ -719,14 +768,14 @@ msgstr "Dibintangi"
msgid "Subscribe" msgid "Subscribe"
msgstr "Langgan" msgstr "Langgan"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "Langgan URL"
#: src/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
msgid "Subscribe to the feed" msgid "Subscribe to the feed"
msgstr "Langgan suapan" msgstr "Langgan suapan"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "Langgan URL"
#: src/components/Alert.tsx #: src/components/Alert.tsx
msgid "Success" msgid "Success"
msgstr "Kejayaan" msgstr "Kejayaan"
@@ -736,10 +785,12 @@ msgid "Swipe header to the right"
msgstr "" msgstr ""
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to dark theme" msgid "Switch to dark theme"
msgstr "Tukar kepada tema gelap" msgstr "Tukar kepada tema gelap"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to light theme" msgid "Switch to light theme"
msgstr "Tukar kepada tema cahaya" msgstr "Tukar kepada tema cahaya"
@@ -759,6 +810,10 @@ msgstr "Tema"
msgid "Toggle read status of current entry" msgid "Toggle read status of current entry"
msgstr "Togol status bacaan entri semasa" msgstr "Togol status bacaan entri semasa"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Toggle sidebar"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Try out CommaFeed with the demo account: demo/demo" msgid "Try out CommaFeed with the demo account: demo/demo"
msgstr "Cuba CommaFeed dengan akaun demo: demo/demo" msgstr "Cuba CommaFeed dengan akaun demo: demo/demo"
@@ -781,15 +836,15 @@ msgstr "Nyahbintang"
msgid "Unsubscribe" msgid "Unsubscribe"
msgstr "Nyahlanggan" msgstr "Nyahlanggan"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Nama pengguna"
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "User Name or E-mail" msgid "User Name or E-mail"
msgstr "Nama Pengguna atau E-mel" msgstr "Nama Pengguna atau E-mel"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Nama pengguna"
#: src/components/Alert.tsx #: src/components/Alert.tsx
msgid "Warning" msgid "Warning"
msgstr "Amaran" msgstr "Amaran"
@@ -805,11 +860,3 @@ msgstr "Anda belum mempunyai sebarang langganan lagi. "
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh." msgid "Your feeds have been queued for refresh."
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "fail diperlukan"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""

View File

@@ -13,6 +13,14 @@ msgstr ""
"Language-Team: \n" "Language-Team: \n"
"Plural-Forms: \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 #: src/pages/app/FeedDetailsPage.tsx
msgid "<0>Complete syntax is available </0><1>here</1>." msgid "<0>Complete syntax is available </0><1>here</1>."
msgstr "" msgstr ""
@@ -21,14 +29,14 @@ msgstr ""
msgid "<0>Have an account?</0><1>Log in!</1>" msgid "<0>Have an account?</0><1>Log in!</1>"
msgstr "<0>Har du en konto?</0><1>Logg på!</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 #: src/pages/auth/LoginPage.tsx
msgid "<0>Need an account?</0><1>Sign up!</1>" msgid "<0>Need an account?</0><1>Sign up!</1>"
msgstr "<0>Trenger du en konto?</0><1>Registrer deg!</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/components/header/ProfileMenu.tsx
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "About" msgid "About"
@@ -63,6 +71,10 @@ msgstr ""
msgid "All" msgid "All"
msgstr "Alle" msgstr "Alle"
#: src/components/settings/DisplaySettings.tsx
msgid "Always scroll selected entry to the top of the page, even if it fits entirely on screen"
msgstr ""
#: src/pages/auth/PasswordRecoveryPage.tsx #: src/pages/auth/PasswordRecoveryPage.tsx
msgid "An email has been sent if this address was registered. Check your inbox." msgid "An email has been sent if this address was registered. Check your inbox."
msgstr "En e-post er sendt hvis denne adressen var registrert. " msgstr "En e-post er sendt hvis denne adressen var registrert. "
@@ -75,6 +87,10 @@ msgstr "En opml-fil er en XML-fil som inneholder feed-URLer og kategorier. "
msgid "Analyze feed" msgid "Analyze feed"
msgstr "Analyser feed" msgstr "Analyser feed"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "API-nøkkel"
#: src/pages/app/CategoryDetailsPage.tsx #: src/pages/app/CategoryDetailsPage.tsx
msgid "Are you sure you want to delete category <0>{categoryName}</0>?" 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>?" msgstr "Er du sikker på at du vil slette kategori <0>{categoryName}</0>?"
@@ -115,14 +131,19 @@ msgstr "Tilbake"
msgid "Back to log in" msgid "Back to log in"
msgstr "Tilbake for å logge inn" msgstr "Tilbake for å logge inn"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required for Chrome"
msgstr ""
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "Browser extentions" msgid "Browser extention"
msgstr "Nettleserutvidelser" msgstr ""
#: src/components/admin/UserEdit.tsx #: src/components/admin/UserEdit.tsx
#: src/components/content/add/AddCategory.tsx #: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx #: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx #: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx #: src/pages/admin/AdminUsersPage.tsx
@@ -151,16 +172,16 @@ msgid "Check that the feed is working"
msgstr "Sjekk at feeden fungerer" msgstr "Sjekk at feeden fungerer"
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>." msgid "CommaFeed browser extension version {browserExtensionVersion}."
msgstr "CommaFeed er et åpen kildekode-prosjekt. " msgstr ""
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item" msgid "CommaFeed next unread item"
msgstr "CommaFeed neste uleste element" msgstr "CommaFeed neste uleste element"
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed version {version} ({revision})" msgid "CommaFeed version {version} ({revision})."
msgstr "CommaFeed versjon {versjon} ({revisjon})" msgstr ""
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Compact" msgid "Compact"
@@ -194,6 +215,18 @@ msgstr ""
msgid "Current password" msgid "Current password"
msgstr "Gjeldende passord" 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 #: src/pages/admin/AdminUsersPage.tsx
msgid "Date created" msgid "Date created"
msgstr "Dato opprettet" msgstr "Dato opprettet"
@@ -202,15 +235,15 @@ msgstr "Dato opprettet"
msgid "Delete" msgid "Delete"
msgstr "Slett" msgstr "Slett"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Slett kategori"
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
msgid "Delete account" msgid "Delete account"
msgstr "Slett konto" msgstr "Slett konto"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Slett kategori"
#: src/pages/admin/AdminUsersPage.tsx #: src/pages/admin/AdminUsersPage.tsx
msgid "Delete user" msgid "Delete user"
msgstr "Slett bruker" msgstr "Slett bruker"
@@ -228,6 +261,11 @@ msgstr ""
msgid "Display" msgid "Display"
msgstr "Visning" msgstr "Visning"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/DonatePage.tsx
msgid "Donate"
msgstr ""
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
msgid "Download" msgid "Download"
msgstr "Last ned" msgstr "Last ned"
@@ -282,28 +320,33 @@ msgstr "Utvidet"
msgid "Export your subscriptions and categories as an OPML file that can be imported in other feed reading services" 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" 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/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
msgid "Feed URL" msgid "Feed URL"
msgstr "Feed-URL" msgstr "Feed-URL"
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "Feednavn"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now" msgid "Fetch all my feeds now"
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "fil kreves"
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
msgid "Filtering expression" msgid "Filtering expression"
msgstr "Filtrerende uttrykk" msgstr "Filtrerende uttrykk"
#: src/pages/app/AboutPage.tsx
msgid "For those of you who prefer bitcoin, here is the address: {bitcoinAddress}"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Forgot password?" msgid "Forgot password?"
msgstr "Glemt passord?" msgstr "Glemt passord?"
@@ -324,17 +367,17 @@ msgstr "Generer ny API-nøkkel"
msgid "Generated feed url" msgid "Generated feed url"
msgstr "Generert feed-url" msgstr "Generert feed-url"
#: src/pages/app/AboutPage.tsx #: src/components/content/FeedEntryContextMenu.tsx
msgid "Go to the API documentation." msgid "Go to {0}"
msgstr "Gå til API-dokumentasjonen." msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Go to the All view" msgid "Go to the All view"
msgstr "Gå til visningen Alle" msgstr "Gå til visningen Alle"
#: src/components/content/FeedEntryContextMenu.tsx #: src/pages/app/AboutPage.tsx
msgid "Go to {0}" msgid "Go to the API documentation."
msgstr "" msgstr "Gå til API-dokumentasjonen."
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "Goodies" msgid "Goodies"
@@ -352,10 +395,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." 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." 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 #: src/components/content/add/ImportOpml.tsx
msgid "Import" msgid "Import"
msgstr "" msgstr ""
@@ -491,6 +530,7 @@ msgid "Newest first"
msgstr "Nyeste først" msgstr "Nyeste først"
#: src/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
#: src/components/header/Header.tsx
msgid "Next" msgid "Next"
msgstr "Neste" msgstr "Neste"
@@ -510,19 +550,6 @@ msgstr "Ingen flere oppføringer"
msgid "Nothing found" msgid "Nothing found"
msgstr "Ingenting funnet" 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 #: src/pages/app/AboutPage.tsx
msgid "Oldest first" msgid "Oldest first"
msgstr "Eldste først" msgstr "Eldste først"
@@ -531,6 +558,10 @@ msgstr "Eldste først"
msgid "Oops!" msgid "Oops!"
msgstr "Beklager!" msgstr "Beklager!"
#: src/components/header/Header.tsx
msgid "Open CommaFeed"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Open current entry in a new tab" msgid "Open current entry in a new tab"
msgstr "Åpne gjeldende oppføring i en ny fane" msgstr "Åpne gjeldende oppføring i en ny fane"
@@ -563,6 +594,19 @@ msgstr "Åpne forrige oppføring"
msgid "Open/close current entry" msgid "Open/close current entry"
msgstr "Åpne/lukk gjeldende oppføring" 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 #: src/pages/app/AboutPage.tsx
msgid "Order" msgid "Order"
msgstr "Ord" msgstr "Ord"
@@ -596,14 +640,14 @@ msgstr "Passordene samsvarer ikke"
msgid "Position" msgid "Position"
msgstr "Posisjon" msgstr "Posisjon"
#: src/components/header/Header.tsx
msgid "Previous"
msgstr ""
#: src/pages/app/SettingsPage.tsx #: src/pages/app/SettingsPage.tsx
msgid "Profile" msgid "Profile"
msgstr "Profil" msgstr "Profil"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/pages/auth/PasswordRecoveryPage.tsx #: src/pages/auth/PasswordRecoveryPage.tsx
msgid "Recover password" msgid "Recover password"
msgstr "Gjenopprett passord" msgstr "Gjenopprett passord"
@@ -617,11 +661,16 @@ msgstr "Oppdater"
msgid "Registrations are closed on this CommaFeed instance" msgid "Registrations are closed on this CommaFeed instance"
msgstr "Registreringer er stengt på denne CommaFeed-forekomsten" msgstr "Registreringer er stengt på denne CommaFeed-forekomsten"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click" msgid "Right click"
msgstr "" msgstr ""
#: src/components/admin/UserEdit.tsx #: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx #: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
@@ -719,14 +768,14 @@ msgstr "Stjerne"
msgid "Subscribe" msgid "Subscribe"
msgstr "Abonner" msgstr "Abonner"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "Abonner URL"
#: src/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
msgid "Subscribe to the feed" msgid "Subscribe to the feed"
msgstr "Abonner på feeden" msgstr "Abonner på feeden"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "Abonner URL"
#: src/components/Alert.tsx #: src/components/Alert.tsx
msgid "Success" msgid "Success"
msgstr "Suksess" msgstr "Suksess"
@@ -736,10 +785,12 @@ msgid "Swipe header to the right"
msgstr "" msgstr ""
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to dark theme" msgid "Switch to dark theme"
msgstr "Bytt til mørkt tema" msgstr "Bytt til mørkt tema"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to light theme" msgid "Switch to light theme"
msgstr "Bytt til lystema" msgstr "Bytt til lystema"
@@ -759,6 +810,10 @@ msgstr "Tema"
msgid "Toggle read status of current entry" msgid "Toggle read status of current entry"
msgstr "Veksle lesestatus for gjeldende oppføring" msgstr "Veksle lesestatus for gjeldende oppføring"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Toggle sidebar"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Try out CommaFeed with the demo account: demo/demo" msgid "Try out CommaFeed with the demo account: demo/demo"
msgstr "Prøv CommaFeed med demokontoen: demo/demo" msgstr "Prøv CommaFeed med demokontoen: demo/demo"
@@ -781,15 +836,15 @@ msgstr "Fjern stjerne"
msgid "Unsubscribe" msgid "Unsubscribe"
msgstr "Avslutt abonnementet" msgstr "Avslutt abonnementet"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Brukernavn"
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "User Name or E-mail" msgid "User Name or E-mail"
msgstr "Brukernavn eller e-post" msgstr "Brukernavn eller e-post"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Brukernavn"
#: src/components/Alert.tsx #: src/components/Alert.tsx
msgid "Warning" msgid "Warning"
msgstr "Advarsel" msgstr "Advarsel"
@@ -805,11 +860,3 @@ msgstr "Du har ingen abonnementer ennå. "
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh." msgid "Your feeds have been queued for refresh."
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "fil kreves"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""

View File

@@ -13,6 +13,14 @@ msgstr ""
"Language-Team: \n" "Language-Team: \n"
"Plural-Forms: \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 #: src/pages/app/FeedDetailsPage.tsx
msgid "<0>Complete syntax is available </0><1>here</1>." msgid "<0>Complete syntax is available </0><1>here</1>."
msgstr "" msgstr ""
@@ -21,14 +29,14 @@ msgstr ""
msgid "<0>Have an account?</0><1>Log in!</1>" msgid "<0>Have an account?</0><1>Log in!</1>"
msgstr "<0>Heb je een 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 #: src/pages/auth/LoginPage.tsx
msgid "<0>Need an account?</0><1>Sign up!</1>" msgid "<0>Need an account?</0><1>Sign up!</1>"
msgstr "<0>Een account nodig?</0><1>Meld je aan!</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/components/header/ProfileMenu.tsx
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "About" msgid "About"
@@ -63,6 +71,10 @@ msgstr "Beheerder"
msgid "All" msgid "All"
msgstr "Alles" msgstr "Alles"
#: src/components/settings/DisplaySettings.tsx
msgid "Always scroll selected entry to the top of the page, even if it fits entirely on screen"
msgstr ""
#: src/pages/auth/PasswordRecoveryPage.tsx #: src/pages/auth/PasswordRecoveryPage.tsx
msgid "An email has been sent if this address was registered. Check your inbox." msgid "An email has been sent if this address was registered. Check your inbox."
msgstr "Er is een e-mail verzonden als dit adres is geregistreerd. " msgstr "Er is een e-mail verzonden als dit adres is geregistreerd. "
@@ -75,6 +87,10 @@ msgstr "Een opml-bestand is een XML-bestand met feed-URL's en categorieën. "
msgid "Analyze feed" msgid "Analyze feed"
msgstr "Analyseer feed" msgstr "Analyseer feed"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "API-sleutel"
#: src/pages/app/CategoryDetailsPage.tsx #: src/pages/app/CategoryDetailsPage.tsx
msgid "Are you sure you want to delete category <0>{categoryName}</0>?" msgid "Are you sure you want to delete category <0>{categoryName}</0>?"
msgstr "Weet je zeker dat je categorie <0>{categoryName}</0> wilt verwijderen?" msgstr "Weet je zeker dat je categorie <0>{categoryName}</0> wilt verwijderen?"
@@ -115,14 +131,19 @@ msgstr "Terug"
msgid "Back to log in" msgid "Back to log in"
msgstr "Terug naar inloggen" msgstr "Terug naar inloggen"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required for Chrome"
msgstr ""
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "Browser extentions" msgid "Browser extention"
msgstr "Browserextensies" msgstr ""
#: src/components/admin/UserEdit.tsx #: src/components/admin/UserEdit.tsx
#: src/components/content/add/AddCategory.tsx #: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx #: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx #: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx #: src/pages/admin/AdminUsersPage.tsx
@@ -151,16 +172,16 @@ msgid "Check that the feed is working"
msgstr "Controleer of de feed werkt" msgstr "Controleer of de feed werkt"
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>." msgid "CommaFeed browser extension version {browserExtensionVersion}."
msgstr "CommaFeed is een open-sourceproject. " msgstr ""
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item" msgid "CommaFeed next unread item"
msgstr "CommaFeed volgende ongelezen item" msgstr "CommaFeed volgende ongelezen item"
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed version {version} ({revision})" msgid "CommaFeed version {version} ({revision})."
msgstr "CommaFeed-versie {versie} ({revisie})" msgstr ""
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Compact" msgid "Compact"
@@ -194,6 +215,18 @@ msgstr ""
msgid "Current password" msgid "Current password"
msgstr "Huidig wachtwoord" 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 #: src/pages/admin/AdminUsersPage.tsx
msgid "Date created" msgid "Date created"
msgstr "Datum gemaakt" msgstr "Datum gemaakt"
@@ -202,15 +235,15 @@ msgstr "Datum gemaakt"
msgid "Delete" msgid "Delete"
msgstr "Verwijderen" msgstr "Verwijderen"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Categorie verwijderen"
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
msgid "Delete account" msgid "Delete account"
msgstr "Account verwijderen" msgstr "Account verwijderen"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Categorie verwijderen"
#: src/pages/admin/AdminUsersPage.tsx #: src/pages/admin/AdminUsersPage.tsx
msgid "Delete user" msgid "Delete user"
msgstr "Gebruiker verwijderen" msgstr "Gebruiker verwijderen"
@@ -228,6 +261,11 @@ msgstr ""
msgid "Display" msgid "Display"
msgstr "Weergave" msgstr "Weergave"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/DonatePage.tsx
msgid "Donate"
msgstr ""
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
msgid "Download" msgid "Download"
msgstr "Downloaden" msgstr "Downloaden"
@@ -282,28 +320,33 @@ msgstr "Uitgebreid"
msgid "Export your subscriptions and categories as an OPML file that can be imported in other feed reading services" 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" 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/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
msgid "Feed URL" msgid "Feed URL"
msgstr "Feed-URL" msgstr "Feed-URL"
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "Feednaam"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now" msgid "Fetch all my feeds now"
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "bestand is vereist"
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
msgid "Filtering expression" msgid "Filtering expression"
msgstr "Uitdrukking filteren" msgstr "Uitdrukking filteren"
#: src/pages/app/AboutPage.tsx
msgid "For those of you who prefer bitcoin, here is the address: {bitcoinAddress}"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Forgot password?" msgid "Forgot password?"
msgstr "Wachtwoord vergeten?" msgstr "Wachtwoord vergeten?"
@@ -324,17 +367,17 @@ msgstr "Nieuwe API-sleutel genereren"
msgid "Generated feed url" msgid "Generated feed url"
msgstr "Gegenereerde feed-url" msgstr "Gegenereerde feed-url"
#: src/pages/app/AboutPage.tsx #: src/components/content/FeedEntryContextMenu.tsx
msgid "Go to the API documentation." msgid "Go to {0}"
msgstr "Ga naar de API-documentatie." msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Go to the All view" msgid "Go to the All view"
msgstr "Ga naar de weergave Alles" msgstr "Ga naar de weergave Alles"
#: src/components/content/FeedEntryContextMenu.tsx #: src/pages/app/AboutPage.tsx
msgid "Go to {0}" msgid "Go to the API documentation."
msgstr "" msgstr "Ga naar de API-documentatie."
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "Goodies" msgid "Goodies"
@@ -352,10 +395,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." 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." 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 #: src/components/content/add/ImportOpml.tsx
msgid "Import" msgid "Import"
msgstr "" msgstr ""
@@ -491,6 +530,7 @@ msgid "Newest first"
msgstr "Nieuwste eerst" msgstr "Nieuwste eerst"
#: src/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
#: src/components/header/Header.tsx
msgid "Next" msgid "Next"
msgstr "Volgende" msgstr "Volgende"
@@ -510,19 +550,6 @@ msgstr "Geen inzendingen meer"
msgid "Nothing found" msgid "Nothing found"
msgstr "Niets gevonden" 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 #: src/pages/app/AboutPage.tsx
msgid "Oldest first" msgid "Oldest first"
msgstr "Oudste eerst" msgstr "Oudste eerst"
@@ -531,6 +558,10 @@ msgstr "Oudste eerst"
msgid "Oops!" msgid "Oops!"
msgstr "Oeps!" msgstr "Oeps!"
#: src/components/header/Header.tsx
msgid "Open CommaFeed"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Open current entry in a new tab" msgid "Open current entry in a new tab"
msgstr "Huidige invoer openen in een nieuw tabblad" msgstr "Huidige invoer openen in een nieuw tabblad"
@@ -563,6 +594,19 @@ msgstr "Open vorige invoer"
msgid "Open/close current entry" msgid "Open/close current entry"
msgstr "Huidige invoer openen/sluiten" 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 #: src/pages/app/AboutPage.tsx
msgid "Order" msgid "Order"
msgstr "Bestelling" msgstr "Bestelling"
@@ -596,14 +640,14 @@ msgstr "Wachtwoorden komen niet overeen"
msgid "Position" msgid "Position"
msgstr "Positie" msgstr "Positie"
#: src/components/header/Header.tsx
msgid "Previous"
msgstr ""
#: src/pages/app/SettingsPage.tsx #: src/pages/app/SettingsPage.tsx
msgid "Profile" msgid "Profile"
msgstr "Profiel" msgstr "Profiel"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr "REST-API"
#: src/pages/auth/PasswordRecoveryPage.tsx #: src/pages/auth/PasswordRecoveryPage.tsx
msgid "Recover password" msgid "Recover password"
msgstr "wachtwoord herstellen" msgstr "wachtwoord herstellen"
@@ -617,11 +661,16 @@ msgstr "Vernieuwen"
msgid "Registrations are closed on this CommaFeed instance" msgid "Registrations are closed on this CommaFeed instance"
msgstr "Registraties zijn gesloten op deze CommaFeed-instantie" msgstr "Registraties zijn gesloten op deze CommaFeed-instantie"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr "REST-API"
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click" msgid "Right click"
msgstr "" msgstr ""
#: src/components/admin/UserEdit.tsx #: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx #: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
@@ -719,14 +768,14 @@ msgstr "Met ster"
msgid "Subscribe" msgid "Subscribe"
msgstr "Abonneren" msgstr "Abonneren"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "Abonneer-URL"
#: src/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
msgid "Subscribe to the feed" msgid "Subscribe to the feed"
msgstr "Abonneer je op de feed" msgstr "Abonneer je op de feed"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "Abonneer-URL"
#: src/components/Alert.tsx #: src/components/Alert.tsx
msgid "Success" msgid "Success"
msgstr "Succes" msgstr "Succes"
@@ -736,10 +785,12 @@ msgid "Swipe header to the right"
msgstr "" msgstr ""
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to dark theme" msgid "Switch to dark theme"
msgstr "Overschakelen naar donker thema" msgstr "Overschakelen naar donker thema"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to light theme" msgid "Switch to light theme"
msgstr "Overschakelen naar lichtthema" msgstr "Overschakelen naar lichtthema"
@@ -759,6 +810,10 @@ msgstr "Thema"
msgid "Toggle read status of current entry" msgid "Toggle read status of current entry"
msgstr "Toggle leesstatus van huidige invoer" msgstr "Toggle leesstatus van huidige invoer"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Toggle sidebar"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Try out CommaFeed with the demo account: demo/demo" msgid "Try out CommaFeed with the demo account: demo/demo"
msgstr "Probeer CommaFeed uit met het demo-account: demo/demo" msgstr "Probeer CommaFeed uit met het demo-account: demo/demo"
@@ -781,15 +836,15 @@ msgstr "Sterren uit"
msgid "Unsubscribe" msgid "Unsubscribe"
msgstr "Afmelden" msgstr "Afmelden"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Gebruikersnaam"
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "User Name or E-mail" msgid "User Name or E-mail"
msgstr "Gebruikersnaam of e-mailadres" msgstr "Gebruikersnaam of e-mailadres"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Gebruikersnaam"
#: src/components/Alert.tsx #: src/components/Alert.tsx
msgid "Warning" msgid "Warning"
msgstr "Waarschuwing" msgstr "Waarschuwing"
@@ -805,11 +860,3 @@ msgstr "Je hebt nog geen abonnementen. "
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh." msgid "Your feeds have been queued for refresh."
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "bestand is vereist"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""

View File

@@ -13,6 +13,14 @@ msgstr ""
"Language-Team: \n" "Language-Team: \n"
"Plural-Forms: \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 #: src/pages/app/FeedDetailsPage.tsx
msgid "<0>Complete syntax is available </0><1>here</1>." msgid "<0>Complete syntax is available </0><1>here</1>."
msgstr "" msgstr ""
@@ -21,14 +29,14 @@ msgstr ""
msgid "<0>Have an account?</0><1>Log in!</1>" msgid "<0>Have an account?</0><1>Log in!</1>"
msgstr "<0>Har du en konto?</0><1>Logg på!</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 #: src/pages/auth/LoginPage.tsx
msgid "<0>Need an account?</0><1>Sign up!</1>" msgid "<0>Need an account?</0><1>Sign up!</1>"
msgstr "<0>Trenger du en konto?</0><1>Registrer deg!</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/components/header/ProfileMenu.tsx
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "About" msgid "About"
@@ -63,6 +71,10 @@ msgstr ""
msgid "All" msgid "All"
msgstr "Alle" msgstr "Alle"
#: src/components/settings/DisplaySettings.tsx
msgid "Always scroll selected entry to the top of the page, even if it fits entirely on screen"
msgstr ""
#: src/pages/auth/PasswordRecoveryPage.tsx #: src/pages/auth/PasswordRecoveryPage.tsx
msgid "An email has been sent if this address was registered. Check your inbox." msgid "An email has been sent if this address was registered. Check your inbox."
msgstr "En e-post er sendt hvis denne adressen var registrert. " msgstr "En e-post er sendt hvis denne adressen var registrert. "
@@ -75,6 +87,10 @@ msgstr "En opml-fil er en XML-fil som inneholder feed-URLer og kategorier. "
msgid "Analyze feed" msgid "Analyze feed"
msgstr "Analyser feed" msgstr "Analyser feed"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "API-nøkkel"
#: src/pages/app/CategoryDetailsPage.tsx #: src/pages/app/CategoryDetailsPage.tsx
msgid "Are you sure you want to delete category <0>{categoryName}</0>?" 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>?" msgstr "Er du sikker på at du vil slette kategori <0>{categoryName}</0>?"
@@ -115,14 +131,19 @@ msgstr "Tilbake"
msgid "Back to log in" msgid "Back to log in"
msgstr "Tilbake for å logge inn" msgstr "Tilbake for å logge inn"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required for Chrome"
msgstr ""
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "Browser extentions" msgid "Browser extention"
msgstr "Nettleserutvidelser" msgstr ""
#: src/components/admin/UserEdit.tsx #: src/components/admin/UserEdit.tsx
#: src/components/content/add/AddCategory.tsx #: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx #: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx #: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx #: src/pages/admin/AdminUsersPage.tsx
@@ -151,16 +172,16 @@ msgid "Check that the feed is working"
msgstr "Sjekk at feeden fungerer" msgstr "Sjekk at feeden fungerer"
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>." msgid "CommaFeed browser extension version {browserExtensionVersion}."
msgstr "CommaFeed er et åpen kildekode-prosjekt. " msgstr ""
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item" msgid "CommaFeed next unread item"
msgstr "CommaFeed neste uleste element" msgstr "CommaFeed neste uleste element"
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed version {version} ({revision})" msgid "CommaFeed version {version} ({revision})."
msgstr "CommaFeed versjon {versjon} ({revisjon})" msgstr ""
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Compact" msgid "Compact"
@@ -194,6 +215,18 @@ msgstr ""
msgid "Current password" msgid "Current password"
msgstr "Gjeldende passord" 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 #: src/pages/admin/AdminUsersPage.tsx
msgid "Date created" msgid "Date created"
msgstr "Dato opprettet" msgstr "Dato opprettet"
@@ -202,15 +235,15 @@ msgstr "Dato opprettet"
msgid "Delete" msgid "Delete"
msgstr "Slett" msgstr "Slett"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Slett kategori"
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
msgid "Delete account" msgid "Delete account"
msgstr "Slett konto" msgstr "Slett konto"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Slett kategori"
#: src/pages/admin/AdminUsersPage.tsx #: src/pages/admin/AdminUsersPage.tsx
msgid "Delete user" msgid "Delete user"
msgstr "Slett bruker" msgstr "Slett bruker"
@@ -228,6 +261,11 @@ msgstr ""
msgid "Display" msgid "Display"
msgstr "Visning" msgstr "Visning"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/DonatePage.tsx
msgid "Donate"
msgstr ""
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
msgid "Download" msgid "Download"
msgstr "Last ned" msgstr "Last ned"
@@ -282,28 +320,33 @@ msgstr "Utvidet"
msgid "Export your subscriptions and categories as an OPML file that can be imported in other feed reading services" 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" 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/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
msgid "Feed URL" msgid "Feed URL"
msgstr "Feed-URL" msgstr "Feed-URL"
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "Feednavn"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now" msgid "Fetch all my feeds now"
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "fil kreves"
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
msgid "Filtering expression" msgid "Filtering expression"
msgstr "Filtrerende uttrykk" msgstr "Filtrerende uttrykk"
#: src/pages/app/AboutPage.tsx
msgid "For those of you who prefer bitcoin, here is the address: {bitcoinAddress}"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Forgot password?" msgid "Forgot password?"
msgstr "Glemt passord?" msgstr "Glemt passord?"
@@ -324,17 +367,17 @@ msgstr "Generer ny API-nøkkel"
msgid "Generated feed url" msgid "Generated feed url"
msgstr "Generert feed-url" msgstr "Generert feed-url"
#: src/pages/app/AboutPage.tsx #: src/components/content/FeedEntryContextMenu.tsx
msgid "Go to the API documentation." msgid "Go to {0}"
msgstr "Gå til API-dokumentasjonen." msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Go to the All view" msgid "Go to the All view"
msgstr "Gå til visningen Alle" msgstr "Gå til visningen Alle"
#: src/components/content/FeedEntryContextMenu.tsx #: src/pages/app/AboutPage.tsx
msgid "Go to {0}" msgid "Go to the API documentation."
msgstr "" msgstr "Gå til API-dokumentasjonen."
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "Goodies" msgid "Goodies"
@@ -352,10 +395,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." 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." 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 #: src/components/content/add/ImportOpml.tsx
msgid "Import" msgid "Import"
msgstr "" msgstr ""
@@ -491,6 +530,7 @@ msgid "Newest first"
msgstr "Nyeste først" msgstr "Nyeste først"
#: src/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
#: src/components/header/Header.tsx
msgid "Next" msgid "Next"
msgstr "Neste" msgstr "Neste"
@@ -510,19 +550,6 @@ msgstr "Ingen flere oppføringer"
msgid "Nothing found" msgid "Nothing found"
msgstr "Ingenting funnet" 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 #: src/pages/app/AboutPage.tsx
msgid "Oldest first" msgid "Oldest first"
msgstr "Eldste først" msgstr "Eldste først"
@@ -531,6 +558,10 @@ msgstr "Eldste først"
msgid "Oops!" msgid "Oops!"
msgstr "Beklager!" msgstr "Beklager!"
#: src/components/header/Header.tsx
msgid "Open CommaFeed"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Open current entry in a new tab" msgid "Open current entry in a new tab"
msgstr "Åpne gjeldende oppføring i en ny fane" msgstr "Åpne gjeldende oppføring i en ny fane"
@@ -563,6 +594,19 @@ msgstr "Åpne forrige oppføring"
msgid "Open/close current entry" msgid "Open/close current entry"
msgstr "Åpne/lukk gjeldende oppføring" 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 #: src/pages/app/AboutPage.tsx
msgid "Order" msgid "Order"
msgstr "Ord" msgstr "Ord"
@@ -596,14 +640,14 @@ msgstr "Passordene samsvarer ikke"
msgid "Position" msgid "Position"
msgstr "Posisjon" msgstr "Posisjon"
#: src/components/header/Header.tsx
msgid "Previous"
msgstr ""
#: src/pages/app/SettingsPage.tsx #: src/pages/app/SettingsPage.tsx
msgid "Profile" msgid "Profile"
msgstr "Profil" msgstr "Profil"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/pages/auth/PasswordRecoveryPage.tsx #: src/pages/auth/PasswordRecoveryPage.tsx
msgid "Recover password" msgid "Recover password"
msgstr "Gjenopprett passord" msgstr "Gjenopprett passord"
@@ -617,11 +661,16 @@ msgstr "Oppdater"
msgid "Registrations are closed on this CommaFeed instance" msgid "Registrations are closed on this CommaFeed instance"
msgstr "Registreringer er stengt på denne CommaFeed-forekomsten" msgstr "Registreringer er stengt på denne CommaFeed-forekomsten"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click" msgid "Right click"
msgstr "" msgstr ""
#: src/components/admin/UserEdit.tsx #: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx #: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
@@ -719,14 +768,14 @@ msgstr "Stjerne"
msgid "Subscribe" msgid "Subscribe"
msgstr "Abonner" msgstr "Abonner"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "Abonner URL"
#: src/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
msgid "Subscribe to the feed" msgid "Subscribe to the feed"
msgstr "Abonner på feeden" msgstr "Abonner på feeden"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "Abonner URL"
#: src/components/Alert.tsx #: src/components/Alert.tsx
msgid "Success" msgid "Success"
msgstr "Suksess" msgstr "Suksess"
@@ -736,10 +785,12 @@ msgid "Swipe header to the right"
msgstr "" msgstr ""
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to dark theme" msgid "Switch to dark theme"
msgstr "Bytt til mørkt tema" msgstr "Bytt til mørkt tema"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to light theme" msgid "Switch to light theme"
msgstr "Bytt til lystema" msgstr "Bytt til lystema"
@@ -759,6 +810,10 @@ msgstr "Tema"
msgid "Toggle read status of current entry" msgid "Toggle read status of current entry"
msgstr "Veksle lesestatus for gjeldende oppføring" msgstr "Veksle lesestatus for gjeldende oppføring"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Toggle sidebar"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Try out CommaFeed with the demo account: demo/demo" msgid "Try out CommaFeed with the demo account: demo/demo"
msgstr "Prøv CommaFeed med demokontoen: demo/demo" msgstr "Prøv CommaFeed med demokontoen: demo/demo"
@@ -781,15 +836,15 @@ msgstr "Fjern stjerne"
msgid "Unsubscribe" msgid "Unsubscribe"
msgstr "Avslutt abonnementet" msgstr "Avslutt abonnementet"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Brukernavn"
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "User Name or E-mail" msgid "User Name or E-mail"
msgstr "Brukernavn eller e-post" msgstr "Brukernavn eller e-post"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Brukernavn"
#: src/components/Alert.tsx #: src/components/Alert.tsx
msgid "Warning" msgid "Warning"
msgstr "Advarsel" msgstr "Advarsel"
@@ -805,11 +860,3 @@ msgstr "Du har ingen abonnementer ennå. "
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh." msgid "Your feeds have been queued for refresh."
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "fil kreves"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""

View File

@@ -13,6 +13,14 @@ msgstr ""
"Language-Team: \n" "Language-Team: \n"
"Plural-Forms: \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 #: src/pages/app/FeedDetailsPage.tsx
msgid "<0>Complete syntax is available </0><1>here</1>." msgid "<0>Complete syntax is available </0><1>here</1>."
msgstr "" msgstr ""
@@ -21,14 +29,14 @@ msgstr ""
msgid "<0>Have an account?</0><1>Log in!</1>" msgid "<0>Have an account?</0><1>Log in!</1>"
msgstr "<0>Masz konto?</0><1>Zaloguj się!<//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 #: src/pages/auth/LoginPage.tsx
msgid "<0>Need an account?</0><1>Sign up!</1>" msgid "<0>Need an account?</0><1>Sign up!</1>"
msgstr "<0>Potrzebujesz konta?</0><1>Zarejestruj się!</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/components/header/ProfileMenu.tsx
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "About" msgid "About"
@@ -63,6 +71,10 @@ msgstr "Administracja"
msgid "All" msgid "All"
msgstr "Wszystkie" msgstr "Wszystkie"
#: src/components/settings/DisplaySettings.tsx
msgid "Always scroll selected entry to the top of the page, even if it fits entirely on screen"
msgstr ""
#: src/pages/auth/PasswordRecoveryPage.tsx #: src/pages/auth/PasswordRecoveryPage.tsx
msgid "An email has been sent if this address was registered. Check your inbox." msgid "An email has been sent if this address was registered. Check your inbox."
msgstr "E-mail został wysłany, jeśli ten adres został zarejestrowany. " msgstr "E-mail został wysłany, jeśli ten adres został zarejestrowany. "
@@ -75,6 +87,10 @@ msgstr "Plik opml to plik XML zawierający adresy URL i kategorie kanałów. "
msgid "Analyze feed" msgid "Analyze feed"
msgstr "Analizuj kanał" msgstr "Analizuj kanał"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "klucz API"
#: src/pages/app/CategoryDetailsPage.tsx #: src/pages/app/CategoryDetailsPage.tsx
msgid "Are you sure you want to delete category <0>{categoryName}</0>?" msgid "Are you sure you want to delete category <0>{categoryName}</0>?"
msgstr "Czy na pewno chcesz usunąć kategorię <0>{categoryName}</0>?" msgstr "Czy na pewno chcesz usunąć kategorię <0>{categoryName}</0>?"
@@ -115,14 +131,19 @@ msgstr "Powrót"
msgid "Back to log in" msgid "Back to log in"
msgstr "Powrót do logowania" msgstr "Powrót do logowania"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required for Chrome"
msgstr ""
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "Browser extentions" msgid "Browser extention"
msgstr "Rozszerzenia przeglądarki" msgstr ""
#: src/components/admin/UserEdit.tsx #: src/components/admin/UserEdit.tsx
#: src/components/content/add/AddCategory.tsx #: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx #: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx #: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx #: src/pages/admin/AdminUsersPage.tsx
@@ -151,16 +172,16 @@ msgid "Check that the feed is working"
msgstr "Sprawdź, czy kanał działa" msgstr "Sprawdź, czy kanał działa"
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>." msgid "CommaFeed browser extension version {browserExtensionVersion}."
msgstr "CommaFeed to projekt typu open source. " msgstr ""
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item" msgid "CommaFeed next unread item"
msgstr "Przecinek następny nieprzeczytany element" msgstr "Przecinek następny nieprzeczytany element"
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed version {version} ({revision})" msgid "CommaFeed version {version} ({revision})."
msgstr "Wersja CommaFeed {wersja} ({wersja})" msgstr ""
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Compact" msgid "Compact"
@@ -194,6 +215,18 @@ msgstr ""
msgid "Current password" msgid "Current password"
msgstr "aktualne hasło" 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 #: src/pages/admin/AdminUsersPage.tsx
msgid "Date created" msgid "Date created"
msgstr "Data utworzenia" msgstr "Data utworzenia"
@@ -202,15 +235,15 @@ msgstr "Data utworzenia"
msgid "Delete" msgid "Delete"
msgstr "Usuń" msgstr "Usuń"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Usuń kategorię"
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
msgid "Delete account" msgid "Delete account"
msgstr "Usuń konto" msgstr "Usuń konto"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Usuń kategorię"
#: src/pages/admin/AdminUsersPage.tsx #: src/pages/admin/AdminUsersPage.tsx
msgid "Delete user" msgid "Delete user"
msgstr "Usuń użytkownika" msgstr "Usuń użytkownika"
@@ -228,6 +261,11 @@ msgstr ""
msgid "Display" msgid "Display"
msgstr "Wyświetlacz" msgstr "Wyświetlacz"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/DonatePage.tsx
msgid "Donate"
msgstr ""
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
msgid "Download" msgid "Download"
msgstr "Pobierz" msgstr "Pobierz"
@@ -282,28 +320,33 @@ msgstr "Rozszerzony"
msgid "Export your subscriptions and categories as an OPML file that can be imported in other feed reading services" 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" 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/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
msgid "Feed URL" msgid "Feed URL"
msgstr "URL kanału" msgstr "URL kanału"
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "nazwa kanału"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now" msgid "Fetch all my feeds now"
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "plik jest wymagany"
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
msgid "Filtering expression" msgid "Filtering expression"
msgstr "Wyrażenie filtrujące" msgstr "Wyrażenie filtrujące"
#: src/pages/app/AboutPage.tsx
msgid "For those of you who prefer bitcoin, here is the address: {bitcoinAddress}"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Forgot password?" msgid "Forgot password?"
msgstr "Zapomniałeś hasła?" msgstr "Zapomniałeś hasła?"
@@ -324,17 +367,17 @@ msgstr "Wygeneruj nowy klucz API"
msgid "Generated feed url" msgid "Generated feed url"
msgstr "Wygenerowany adres URL kanału" msgstr "Wygenerowany adres URL kanału"
#: src/pages/app/AboutPage.tsx #: src/components/content/FeedEntryContextMenu.tsx
msgid "Go to the API documentation." msgid "Go to {0}"
msgstr "Przejdź do dokumentacji API." msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Go to the All view" msgid "Go to the All view"
msgstr "Przejdź do widoku Wszystkie" msgstr "Przejdź do widoku Wszystkie"
#: src/components/content/FeedEntryContextMenu.tsx #: src/pages/app/AboutPage.tsx
msgid "Go to {0}" msgid "Go to the API documentation."
msgstr "" msgstr "Przejdź do dokumentacji API."
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "Goodies" msgid "Goodies"
@@ -352,10 +395,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." 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." 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 #: src/components/content/add/ImportOpml.tsx
msgid "Import" msgid "Import"
msgstr "" msgstr ""
@@ -491,6 +530,7 @@ msgid "Newest first"
msgstr "Najnowsze jako pierwsze" msgstr "Najnowsze jako pierwsze"
#: src/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
#: src/components/header/Header.tsx
msgid "Next" msgid "Next"
msgstr "Dalej" msgstr "Dalej"
@@ -510,19 +550,6 @@ msgstr "Nie ma więcej wpisów"
msgid "Nothing found" msgid "Nothing found"
msgstr "Nic nie znaleziono" 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 #: src/pages/app/AboutPage.tsx
msgid "Oldest first" msgid "Oldest first"
msgstr "Najstarsze jako pierwsze" msgstr "Najstarsze jako pierwsze"
@@ -531,6 +558,10 @@ msgstr "Najstarsze jako pierwsze"
msgid "Oops!" msgid "Oops!"
msgstr "Ups!" msgstr "Ups!"
#: src/components/header/Header.tsx
msgid "Open CommaFeed"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Open current entry in a new tab" msgid "Open current entry in a new tab"
msgstr "Otwórz bieżący wpis w nowej karcie" msgstr "Otwórz bieżący wpis w nowej karcie"
@@ -563,6 +594,19 @@ msgstr "Otwórz poprzedni wpis"
msgid "Open/close current entry" msgid "Open/close current entry"
msgstr "Otwórz/zamknij bieżący wpis" 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 #: src/pages/app/AboutPage.tsx
msgid "Order" msgid "Order"
msgstr "Porządek" msgstr "Porządek"
@@ -596,14 +640,14 @@ msgstr "Hasła nie pasują"
msgid "Position" msgid "Position"
msgstr "Pozycja" msgstr "Pozycja"
#: src/components/header/Header.tsx
msgid "Previous"
msgstr ""
#: src/pages/app/SettingsPage.tsx #: src/pages/app/SettingsPage.tsx
msgid "Profile" msgid "Profile"
msgstr "Profil" msgstr "Profil"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/pages/auth/PasswordRecoveryPage.tsx #: src/pages/auth/PasswordRecoveryPage.tsx
msgid "Recover password" msgid "Recover password"
msgstr "Odzyskaj hasło" msgstr "Odzyskaj hasło"
@@ -617,11 +661,16 @@ msgstr "Odśwież"
msgid "Registrations are closed on this CommaFeed instance" msgid "Registrations are closed on this CommaFeed instance"
msgstr "Rejestracje są zamknięte w tej instancji CommaFeed" msgstr "Rejestracje są zamknięte w tej instancji CommaFeed"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click" msgid "Right click"
msgstr "" msgstr ""
#: src/components/admin/UserEdit.tsx #: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx #: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
@@ -719,14 +768,14 @@ msgstr "Oznaczone gwiazdką"
msgid "Subscribe" msgid "Subscribe"
msgstr "Subskrybuj" msgstr "Subskrybuj"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "Subskrybuj adres URL"
#: src/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
msgid "Subscribe to the feed" msgid "Subscribe to the feed"
msgstr "Subskrybuj kanał" msgstr "Subskrybuj kanał"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "Subskrybuj adres URL"
#: src/components/Alert.tsx #: src/components/Alert.tsx
msgid "Success" msgid "Success"
msgstr "Sukces" msgstr "Sukces"
@@ -736,10 +785,12 @@ msgid "Swipe header to the right"
msgstr "" msgstr ""
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to dark theme" msgid "Switch to dark theme"
msgstr "Przełącz na ciemny motyw" msgstr "Przełącz na ciemny motyw"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to light theme" msgid "Switch to light theme"
msgstr "Przełącz na jasny motyw" msgstr "Przełącz na jasny motyw"
@@ -759,6 +810,10 @@ msgstr "Motyw"
msgid "Toggle read status of current entry" msgid "Toggle read status of current entry"
msgstr "Przełącz stan odczytu bieżącego wpisu" msgstr "Przełącz stan odczytu bieżącego wpisu"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Toggle sidebar"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Try out CommaFeed with the demo account: demo/demo" msgid "Try out CommaFeed with the demo account: demo/demo"
msgstr "Wypróbuj CommaFeed z kontem demo: demo/demo" msgstr "Wypróbuj CommaFeed z kontem demo: demo/demo"
@@ -781,15 +836,15 @@ msgstr ""
msgid "Unsubscribe" msgid "Unsubscribe"
msgstr "Anuluj subskrypcję" 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
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "User Name or E-mail" msgid "User Name or E-mail"
msgstr "Nazwa użytkownika lub 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 #: src/components/Alert.tsx
msgid "Warning" msgid "Warning"
msgstr "Ostrzeżenie" msgstr "Ostrzeżenie"
@@ -805,11 +860,3 @@ msgstr "Nie masz jeszcze żadnych subskrypcji. "
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh." msgid "Your feeds have been queued for refresh."
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "plik jest wymagany"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""

View File

@@ -13,6 +13,14 @@ msgstr ""
"Language-Team: \n" "Language-Team: \n"
"Plural-Forms: \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 #: src/pages/app/FeedDetailsPage.tsx
msgid "<0>Complete syntax is available </0><1>here</1>." msgid "<0>Complete syntax is available </0><1>here</1>."
msgstr "" msgstr ""
@@ -21,14 +29,14 @@ msgstr ""
msgid "<0>Have an account?</0><1>Log in!</1>" msgid "<0>Have an account?</0><1>Log in!</1>"
msgstr "<0>Tem uma conta?</0><1>Faça login!</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 #: src/pages/auth/LoginPage.tsx
msgid "<0>Need an account?</0><1>Sign up!</1>" msgid "<0>Need an account?</0><1>Sign up!</1>"
msgstr "<0>Precisa de uma conta?</0><1>Inscreva-se!</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/components/header/ProfileMenu.tsx
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "About" msgid "About"
@@ -63,6 +71,10 @@ msgstr "Administrador"
msgid "All" msgid "All"
msgstr "Todos" msgstr "Todos"
#: src/components/settings/DisplaySettings.tsx
msgid "Always scroll selected entry to the top of the page, even if it fits entirely on screen"
msgstr ""
#: src/pages/auth/PasswordRecoveryPage.tsx #: src/pages/auth/PasswordRecoveryPage.tsx
msgid "An email has been sent if this address was registered. Check your inbox." msgid "An email has been sent if this address was registered. Check your inbox."
msgstr "Um email foi enviado se este endereço foi registrado. " msgstr "Um email foi enviado se este endereço foi registrado. "
@@ -75,6 +87,10 @@ msgstr "Um arquivo opml é um arquivo XML contendo URLs e categorias de feed. "
msgid "Analyze feed" msgid "Analyze feed"
msgstr "Analisar feed" msgstr "Analisar feed"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "chave de API"
#: src/pages/app/CategoryDetailsPage.tsx #: src/pages/app/CategoryDetailsPage.tsx
msgid "Are you sure you want to delete category <0>{categoryName}</0>?" msgid "Are you sure you want to delete category <0>{categoryName}</0>?"
msgstr "Tem certeza de que deseja excluir a categoria <0>{categoryName}</0>?" msgstr "Tem certeza de que deseja excluir a categoria <0>{categoryName}</0>?"
@@ -115,14 +131,19 @@ msgstr "Voltar"
msgid "Back to log in" msgid "Back to log in"
msgstr "Voltar para logar" msgstr "Voltar para logar"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required for Chrome"
msgstr ""
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "Browser extentions" msgid "Browser extention"
msgstr "Extensões do navegador" msgstr ""
#: src/components/admin/UserEdit.tsx #: src/components/admin/UserEdit.tsx
#: src/components/content/add/AddCategory.tsx #: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx #: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx #: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx #: src/pages/admin/AdminUsersPage.tsx
@@ -151,16 +172,16 @@ msgid "Check that the feed is working"
msgstr "Verifique se o feed está funcionando" msgstr "Verifique se o feed está funcionando"
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>." msgid "CommaFeed browser extension version {browserExtensionVersion}."
msgstr "CommaFeed é um projeto de código aberto. " msgstr ""
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item" msgid "CommaFeed next unread item"
msgstr "CommaFeed próximo item não lido" msgstr "CommaFeed próximo item não lido"
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed version {version} ({revision})" msgid "CommaFeed version {version} ({revision})."
msgstr "Versão do CommaFeed {versão} ({revisão})" msgstr ""
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Compact" msgid "Compact"
@@ -194,6 +215,18 @@ msgstr ""
msgid "Current password" msgid "Current password"
msgstr "Senha atual" 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 #: src/pages/admin/AdminUsersPage.tsx
msgid "Date created" msgid "Date created"
msgstr "Data de criação" msgstr "Data de criação"
@@ -202,15 +235,15 @@ msgstr "Data de criação"
msgid "Delete" msgid "Delete"
msgstr "Excluir" msgstr "Excluir"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Excluir Categoria"
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
msgid "Delete account" msgid "Delete account"
msgstr "Excluir conta" msgstr "Excluir conta"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Excluir Categoria"
#: src/pages/admin/AdminUsersPage.tsx #: src/pages/admin/AdminUsersPage.tsx
msgid "Delete user" msgid "Delete user"
msgstr "Excluir usuário" msgstr "Excluir usuário"
@@ -228,6 +261,11 @@ msgstr ""
msgid "Display" msgid "Display"
msgstr "Exibir" msgstr "Exibir"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/DonatePage.tsx
msgid "Donate"
msgstr ""
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
msgid "Download" msgid "Download"
msgstr "Baixar" msgstr "Baixar"
@@ -282,28 +320,33 @@ msgstr "Expandido"
msgid "Export your subscriptions and categories as an OPML file that can be imported in other feed reading services" 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" 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/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
msgid "Feed URL" msgid "Feed URL"
msgstr "URL do feed" msgstr "URL do feed"
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "Nome do feed"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now" msgid "Fetch all my feeds now"
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "o arquivo é obrigatório"
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
msgid "Filtering expression" msgid "Filtering expression"
msgstr "Filtrando expressão" msgstr "Filtrando expressão"
#: src/pages/app/AboutPage.tsx
msgid "For those of you who prefer bitcoin, here is the address: {bitcoinAddress}"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Forgot password?" msgid "Forgot password?"
msgstr "Esqueceu a senha?" msgstr "Esqueceu a senha?"
@@ -324,17 +367,17 @@ msgstr "Gerar nova chave de API"
msgid "Generated feed url" msgid "Generated feed url"
msgstr "URL do feed gerado" msgstr "URL do feed gerado"
#: src/pages/app/AboutPage.tsx #: src/components/content/FeedEntryContextMenu.tsx
msgid "Go to the API documentation." msgid "Go to {0}"
msgstr "Vá para a documentação da API." msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Go to the All view" msgid "Go to the All view"
msgstr "Ir para a visualização Tudo" msgstr "Ir para a visualização Tudo"
#: src/components/content/FeedEntryContextMenu.tsx #: src/pages/app/AboutPage.tsx
msgid "Go to {0}" msgid "Go to the API documentation."
msgstr "" msgstr "Vá para a documentação da API."
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "Goodies" msgid "Goodies"
@@ -352,10 +395,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." 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." 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 #: src/components/content/add/ImportOpml.tsx
msgid "Import" msgid "Import"
msgstr "Importar" msgstr "Importar"
@@ -491,6 +530,7 @@ msgid "Newest first"
msgstr "Mais novo primeiro" msgstr "Mais novo primeiro"
#: src/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
#: src/components/header/Header.tsx
msgid "Next" msgid "Next"
msgstr "Próximo" msgstr "Próximo"
@@ -510,19 +550,6 @@ msgstr "Não há mais entradas"
msgid "Nothing found" msgid "Nothing found"
msgstr "Nada encontrado" 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 #: src/pages/app/AboutPage.tsx
msgid "Oldest first" msgid "Oldest first"
msgstr "Mais antigo primeiro" msgstr "Mais antigo primeiro"
@@ -531,6 +558,10 @@ msgstr "Mais antigo primeiro"
msgid "Oops!" msgid "Oops!"
msgstr "Opa!" msgstr "Opa!"
#: src/components/header/Header.tsx
msgid "Open CommaFeed"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Open current entry in a new tab" msgid "Open current entry in a new tab"
msgstr "Abrir a entrada atual em uma nova aba" msgstr "Abrir a entrada atual em uma nova aba"
@@ -563,6 +594,19 @@ msgstr "Abrir entrada anterior"
msgid "Open/close current entry" msgid "Open/close current entry"
msgstr "Abrir/fechar entrada atual" 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 #: src/pages/app/AboutPage.tsx
msgid "Order" msgid "Order"
msgstr "Ordem" msgstr "Ordem"
@@ -596,14 +640,14 @@ msgstr "Senhas não coincidem"
msgid "Position" msgid "Position"
msgstr "Posição" msgstr "Posição"
#: src/components/header/Header.tsx
msgid "Previous"
msgstr ""
#: src/pages/app/SettingsPage.tsx #: src/pages/app/SettingsPage.tsx
msgid "Profile" msgid "Profile"
msgstr "Perfil" msgstr "Perfil"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr "API REST"
#: src/pages/auth/PasswordRecoveryPage.tsx #: src/pages/auth/PasswordRecoveryPage.tsx
msgid "Recover password" msgid "Recover password"
msgstr "Recuperar senha" msgstr "Recuperar senha"
@@ -617,11 +661,16 @@ msgstr "Atualizar"
msgid "Registrations are closed on this CommaFeed instance" msgid "Registrations are closed on this CommaFeed instance"
msgstr "Os registros estão fechados nesta instância do CommaFeed" msgstr "Os registros estão fechados nesta instância do CommaFeed"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr "API REST"
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click" msgid "Right click"
msgstr "" msgstr ""
#: src/components/admin/UserEdit.tsx #: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx #: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
@@ -719,14 +768,14 @@ msgstr "Com estrela"
msgid "Subscribe" msgid "Subscribe"
msgstr "Assinar" msgstr "Assinar"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "URL de inscrição"
#: src/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
msgid "Subscribe to the feed" msgid "Subscribe to the feed"
msgstr "Inscrever-se no feed" msgstr "Inscrever-se no feed"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "URL de inscrição"
#: src/components/Alert.tsx #: src/components/Alert.tsx
msgid "Success" msgid "Success"
msgstr "Sucesso" msgstr "Sucesso"
@@ -736,10 +785,12 @@ msgid "Swipe header to the right"
msgstr "" msgstr ""
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to dark theme" msgid "Switch to dark theme"
msgstr "Mudar para tema escuro" msgstr "Mudar para tema escuro"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to light theme" msgid "Switch to light theme"
msgstr "Mudar para tema claro" msgstr "Mudar para tema claro"
@@ -759,6 +810,10 @@ msgstr "Tema"
msgid "Toggle read status of current entry" msgid "Toggle read status of current entry"
msgstr "Alternar o status de leitura da entrada atual" msgstr "Alternar o status de leitura da entrada atual"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Toggle sidebar"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Try out CommaFeed with the demo account: demo/demo" msgid "Try out CommaFeed with the demo account: demo/demo"
msgstr "Experimente o CommaFeed com a conta demo: demo/demo" msgstr "Experimente o CommaFeed com a conta demo: demo/demo"
@@ -781,15 +836,15 @@ msgstr "Desestrelar"
msgid "Unsubscribe" msgid "Unsubscribe"
msgstr "Cancelar inscrição" 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
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "User Name or E-mail" msgid "User Name or E-mail"
msgstr "Nome de usuário ou 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 #: src/components/Alert.tsx
msgid "Warning" msgid "Warning"
msgstr "Aviso" msgstr "Aviso"
@@ -805,11 +860,3 @@ msgstr "Você ainda não tem nenhuma assinatura. "
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh." msgid "Your feeds have been queued for refresh."
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "o arquivo é obrigatório"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""

View File

@@ -13,6 +13,14 @@ msgstr ""
"Language-Team: \n" "Language-Team: \n"
"Plural-Forms: \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 #: src/pages/app/FeedDetailsPage.tsx
msgid "<0>Complete syntax is available </0><1>here</1>." msgid "<0>Complete syntax is available </0><1>here</1>."
msgstr "" msgstr ""
@@ -21,14 +29,14 @@ msgstr ""
msgid "<0>Have an account?</0><1>Log in!</1>" msgid "<0>Have an account?</0><1>Log in!</1>"
msgstr "<0>Есть аккаунт?</0><1>Войти!</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 #: src/pages/auth/LoginPage.tsx
msgid "<0>Need an account?</0><1>Sign up!</1>" msgid "<0>Need an account?</0><1>Sign up!</1>"
msgstr "<0>Нужен аккаунт?</0><1>Зарегистрируйтесь!</1>" msgstr "<0>Нужен аккаунт?</0><1>Зарегистрируйтесь!</1>"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "ключ API"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "About" msgid "About"
@@ -63,6 +71,10 @@ msgstr "Админ"
msgid "All" msgid "All"
msgstr "Все" msgstr "Все"
#: src/components/settings/DisplaySettings.tsx
msgid "Always scroll selected entry to the top of the page, even if it fits entirely on screen"
msgstr ""
#: src/pages/auth/PasswordRecoveryPage.tsx #: src/pages/auth/PasswordRecoveryPage.tsx
msgid "An email has been sent if this address was registered. Check your inbox." msgid "An email has been sent if this address was registered. Check your inbox."
msgstr "Электронное письмо было отправлено, если этот адрес был зарегистрирован. " msgstr "Электронное письмо было отправлено, если этот адрес был зарегистрирован. "
@@ -75,6 +87,10 @@ msgstr "OPML-файл — это XML-файл, содержащий URL-адре
msgid "Analyze feed" msgid "Analyze feed"
msgstr "Анализ канала" msgstr "Анализ канала"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "ключ API"
#: src/pages/app/CategoryDetailsPage.tsx #: src/pages/app/CategoryDetailsPage.tsx
msgid "Are you sure you want to delete category <0>{categoryName}</0>?" msgid "Are you sure you want to delete category <0>{categoryName}</0>?"
msgstr "Вы уверены, что хотите удалить категорию <0>{categoryName}</0>?" msgstr "Вы уверены, что хотите удалить категорию <0>{categoryName}</0>?"
@@ -115,14 +131,19 @@ msgstr "Назад"
msgid "Back to log in" msgid "Back to log in"
msgstr "Вернуться к входу" msgstr "Вернуться к входу"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required for Chrome"
msgstr ""
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "Browser extentions" msgid "Browser extention"
msgstr "Расширения браузера" msgstr ""
#: src/components/admin/UserEdit.tsx #: src/components/admin/UserEdit.tsx
#: src/components/content/add/AddCategory.tsx #: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx #: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx #: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx #: src/pages/admin/AdminUsersPage.tsx
@@ -151,16 +172,16 @@ msgid "Check that the feed is working"
msgstr "Проверьте, работает ли лента." msgstr "Проверьте, работает ли лента."
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>." msgid "CommaFeed browser extension version {browserExtensionVersion}."
msgstr "CommaFeed — это проект с открытым исходным кодом. " msgstr ""
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item" msgid "CommaFeed next unread item"
msgstr "CommaFeed следующий непрочитанный элемент" msgstr "CommaFeed следующий непрочитанный элемент"
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed version {version} ({revision})" msgid "CommaFeed version {version} ({revision})."
msgstr "CommaFeed версия {версия} ({редакция})" msgstr ""
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Compact" msgid "Compact"
@@ -194,6 +215,18 @@ msgstr ""
msgid "Current password" msgid "Current password"
msgstr "Текущий пароль" 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 #: src/pages/admin/AdminUsersPage.tsx
msgid "Date created" msgid "Date created"
msgstr "Дата создания" msgstr "Дата создания"
@@ -202,15 +235,15 @@ msgstr "Дата создания"
msgid "Delete" msgid "Delete"
msgstr "Удалить" msgstr "Удалить"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Удалить категорию"
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
msgid "Delete account" msgid "Delete account"
msgstr "Удалить учетную запись" msgstr "Удалить учетную запись"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Удалить категорию"
#: src/pages/admin/AdminUsersPage.tsx #: src/pages/admin/AdminUsersPage.tsx
msgid "Delete user" msgid "Delete user"
msgstr "Удалить пользователя" msgstr "Удалить пользователя"
@@ -228,6 +261,11 @@ msgstr ""
msgid "Display" msgid "Display"
msgstr "Дисплей" msgstr "Дисплей"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/DonatePage.tsx
msgid "Donate"
msgstr ""
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
msgid "Download" msgid "Download"
msgstr "Скачать" msgstr "Скачать"
@@ -282,28 +320,33 @@ msgstr "Расширенный"
msgid "Export your subscriptions and categories as an OPML file that can be imported in other feed reading services" msgid "Export your subscriptions and categories as an OPML file that can be imported in other feed reading services"
msgstr "Экспортируйте свои подписки и категории в виде файла OPML, который можно импортировать в другие службы чтения каналов." 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/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
msgid "Feed URL" msgid "Feed URL"
msgstr "URL-адрес фида" msgstr "URL-адрес фида"
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "Имя фида"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now" msgid "Fetch all my feeds now"
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "требуется файл"
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
msgid "Filtering expression" msgid "Filtering expression"
msgstr "Выражение фильтрации" msgstr "Выражение фильтрации"
#: src/pages/app/AboutPage.tsx
msgid "For those of you who prefer bitcoin, here is the address: {bitcoinAddress}"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Forgot password?" msgid "Forgot password?"
msgstr "Забыли пароль?" msgstr "Забыли пароль?"
@@ -324,17 +367,17 @@ msgstr "Создать новый ключ API."
msgid "Generated feed url" msgid "Generated feed url"
msgstr "Сгенерированный URL фида" msgstr "Сгенерированный URL фида"
#: src/pages/app/AboutPage.tsx #: src/components/content/FeedEntryContextMenu.tsx
msgid "Go to the API documentation." msgid "Go to {0}"
msgstr "Перейдите к документации по API." msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Go to the All view" msgid "Go to the All view"
msgstr "Перейти к представлению «Все»" msgstr "Перейти к представлению «Все»"
#: src/components/content/FeedEntryContextMenu.tsx #: src/pages/app/AboutPage.tsx
msgid "Go to {0}" msgid "Go to the API documentation."
msgstr "" msgstr "Перейдите к документации по API."
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "Goodies" msgid "Goodies"
@@ -352,10 +395,6 @@ msgstr "Если не пусто, выражение оценивается ка
msgid "If you encounter an issue, please report it on the issues page of the GitHub project." msgid "If you encounter an issue, please report it on the issues page of the GitHub project."
msgstr "Если вы столкнулись с проблемой, сообщите о ней на странице проблем проекта GitHub." 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 #: src/components/content/add/ImportOpml.tsx
msgid "Import" msgid "Import"
msgstr "Импорт" msgstr "Импорт"
@@ -491,6 +530,7 @@ msgid "Newest first"
msgstr "Сначала новые" msgstr "Сначала новые"
#: src/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
#: src/components/header/Header.tsx
msgid "Next" msgid "Next"
msgstr "Далее" msgstr "Далее"
@@ -510,19 +550,6 @@ msgstr "Нет больше записей"
msgid "Nothing found" msgid "Nothing found"
msgstr "Ничего не найдено" 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 #: src/pages/app/AboutPage.tsx
msgid "Oldest first" msgid "Oldest first"
msgstr "Сначала самые старые" msgstr "Сначала самые старые"
@@ -531,6 +558,10 @@ msgstr "Сначала самые старые"
msgid "Oops!" msgid "Oops!"
msgstr "Ой!" msgstr "Ой!"
#: src/components/header/Header.tsx
msgid "Open CommaFeed"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Open current entry in a new tab" msgid "Open current entry in a new tab"
msgstr "Открыть текущую запись в новой вкладке" msgstr "Открыть текущую запись в новой вкладке"
@@ -563,6 +594,19 @@ msgstr "Открыть предыдущую запись"
msgid "Open/close current entry" msgid "Open/close current entry"
msgstr "Открыть/закрыть текущую запись" 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 #: src/pages/app/AboutPage.tsx
msgid "Order" msgid "Order"
msgstr "Заказать" msgstr "Заказать"
@@ -596,14 +640,14 @@ msgstr "Пароли не совпадают"
msgid "Position" msgid "Position"
msgstr "Позиция" msgstr "Позиция"
#: src/components/header/Header.tsx
msgid "Previous"
msgstr ""
#: src/pages/app/SettingsPage.tsx #: src/pages/app/SettingsPage.tsx
msgid "Profile" msgid "Profile"
msgstr "Профиль" msgstr "Профиль"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr "ОТДЫХА API"
#: src/pages/auth/PasswordRecoveryPage.tsx #: src/pages/auth/PasswordRecoveryPage.tsx
msgid "Recover password" msgid "Recover password"
msgstr "Восстановить пароль" msgstr "Восстановить пароль"
@@ -617,11 +661,16 @@ msgstr "Обновить"
msgid "Registrations are closed on this CommaFeed instance" msgid "Registrations are closed on this CommaFeed instance"
msgstr "Регистрация закрыта для этого экземпляра CommaFeed." msgstr "Регистрация закрыта для этого экземпляра CommaFeed."
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr "ОТДЫХА API"
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click" msgid "Right click"
msgstr "" msgstr ""
#: src/components/admin/UserEdit.tsx #: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx #: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
@@ -719,14 +768,14 @@ msgstr "Помечено"
msgid "Subscribe" msgid "Subscribe"
msgstr "Подписаться" msgstr "Подписаться"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "URL-адрес подписки"
#: src/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
msgid "Subscribe to the feed" msgid "Subscribe to the feed"
msgstr "Подписаться на ленту" msgstr "Подписаться на ленту"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "URL-адрес подписки"
#: src/components/Alert.tsx #: src/components/Alert.tsx
msgid "Success" msgid "Success"
msgstr "Успех" msgstr "Успех"
@@ -736,10 +785,12 @@ msgid "Swipe header to the right"
msgstr "" msgstr ""
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to dark theme" msgid "Switch to dark theme"
msgstr "Переключиться на темную тему" msgstr "Переключиться на темную тему"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to light theme" msgid "Switch to light theme"
msgstr "Переключиться на светлую тему" msgstr "Переключиться на светлую тему"
@@ -759,6 +810,10 @@ msgstr "Тема"
msgid "Toggle read status of current entry" msgid "Toggle read status of current entry"
msgstr "Переключить статус чтения текущей записи" msgstr "Переключить статус чтения текущей записи"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Toggle sidebar"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Try out CommaFeed with the demo account: demo/demo" msgid "Try out CommaFeed with the demo account: demo/demo"
msgstr "Попробуйте CommaFeed на демо-счете: demo/demo" msgstr "Попробуйте CommaFeed на демо-счете: demo/demo"
@@ -781,15 +836,15 @@ msgstr "Снять пометку"
msgid "Unsubscribe" msgid "Unsubscribe"
msgstr "Отписаться" msgstr "Отписаться"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Имя пользователя"
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "User Name or E-mail" msgid "User Name or E-mail"
msgstr "Имя пользователя или адрес электронной почты" msgstr "Имя пользователя или адрес электронной почты"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Имя пользователя"
#: src/components/Alert.tsx #: src/components/Alert.tsx
msgid "Warning" msgid "Warning"
msgstr "Предупреждение" msgstr "Предупреждение"
@@ -805,11 +860,3 @@ msgstr "У вас пока нет подписок. "
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh." msgid "Your feeds have been queued for refresh."
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "требуется файл"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""

View File

@@ -13,6 +13,14 @@ msgstr ""
"Language-Team: \n" "Language-Team: \n"
"Plural-Forms: \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 #: src/pages/app/FeedDetailsPage.tsx
msgid "<0>Complete syntax is available </0><1>here</1>." msgid "<0>Complete syntax is available </0><1>here</1>."
msgstr "" msgstr ""
@@ -21,14 +29,14 @@ msgstr ""
msgid "<0>Have an account?</0><1>Log in!</1>" msgid "<0>Have an account?</0><1>Log in!</1>"
msgstr "<0>Máte účet?</0><1>Prihláste sa!</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 #: src/pages/auth/LoginPage.tsx
msgid "<0>Need an account?</0><1>Sign up!</1>" msgid "<0>Need an account?</0><1>Sign up!</1>"
msgstr "<0>Potrebujete účet?</0><1>Zaregistrujte sa!</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/components/header/ProfileMenu.tsx
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "About" msgid "About"
@@ -63,6 +71,10 @@ msgstr "Správca"
msgid "All" msgid "All"
msgstr "Všetky" msgstr "Všetky"
#: src/components/settings/DisplaySettings.tsx
msgid "Always scroll selected entry to the top of the page, even if it fits entirely on screen"
msgstr ""
#: src/pages/auth/PasswordRecoveryPage.tsx #: src/pages/auth/PasswordRecoveryPage.tsx
msgid "An email has been sent if this address was registered. Check your inbox." msgid "An email has been sent if this address was registered. Check your inbox."
msgstr "E-mail bol odoslaný, ak bola táto adresa zaregistrovaná. " msgstr "E-mail bol odoslaný, ak bola táto adresa zaregistrovaná. "
@@ -75,6 +87,10 @@ msgstr "Súbor opml je súbor XML obsahujúci adresy URL kanálov a kategórie.
msgid "Analyze feed" msgid "Analyze feed"
msgstr "Analyzujte krmivo" msgstr "Analyzujte krmivo"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "Kľúč API"
#: src/pages/app/CategoryDetailsPage.tsx #: src/pages/app/CategoryDetailsPage.tsx
msgid "Are you sure you want to delete category <0>{categoryName}</0>?" msgid "Are you sure you want to delete category <0>{categoryName}</0>?"
msgstr "Naozaj chcete odstrániť kategóriu <0>{categoryName}</0>?" msgstr "Naozaj chcete odstrániť kategóriu <0>{categoryName}</0>?"
@@ -115,14 +131,19 @@ msgstr "Späť"
msgid "Back to log in" msgid "Back to log in"
msgstr "Späť na prihlásenie" msgstr "Späť na prihlásenie"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required for Chrome"
msgstr ""
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "Browser extentions" msgid "Browser extention"
msgstr "Rozšírenia prehliadača" msgstr ""
#: src/components/admin/UserEdit.tsx #: src/components/admin/UserEdit.tsx
#: src/components/content/add/AddCategory.tsx #: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx #: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx #: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx #: src/pages/admin/AdminUsersPage.tsx
@@ -151,16 +172,16 @@ msgid "Check that the feed is working"
msgstr "Skontrolujte, či feed funguje" msgstr "Skontrolujte, či feed funguje"
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>." msgid "CommaFeed browser extension version {browserExtensionVersion}."
msgstr "CommaFeed je projekt s otvoreným zdrojom. " msgstr ""
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item" msgid "CommaFeed next unread item"
msgstr "CommaFeed ďalšia neprečítaná položka" msgstr "CommaFeed ďalšia neprečítaná položka"
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed version {version} ({revision})" msgid "CommaFeed version {version} ({revision})."
msgstr "CommaFeed verzia {version} ({revision})" msgstr ""
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Compact" msgid "Compact"
@@ -194,6 +215,18 @@ msgstr ""
msgid "Current password" msgid "Current password"
msgstr "Aktuálne heslo" 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 #: src/pages/admin/AdminUsersPage.tsx
msgid "Date created" msgid "Date created"
msgstr "Dátum vytvorenia" msgstr "Dátum vytvorenia"
@@ -202,15 +235,15 @@ msgstr "Dátum vytvorenia"
msgid "Delete" msgid "Delete"
msgstr "Vymazať" 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
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
msgid "Delete account" msgid "Delete account"
msgstr "Vymažte účet" msgstr "Vymažte účet"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Vymažte kategóriu"
#: src/pages/admin/AdminUsersPage.tsx #: src/pages/admin/AdminUsersPage.tsx
msgid "Delete user" msgid "Delete user"
msgstr "Vymažte používateľa" msgstr "Vymažte používateľa"
@@ -228,6 +261,11 @@ msgstr ""
msgid "Display" msgid "Display"
msgstr "Displej" msgstr "Displej"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/DonatePage.tsx
msgid "Donate"
msgstr ""
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
msgid "Download" msgid "Download"
msgstr "Stiahnuť" msgstr "Stiahnuť"
@@ -282,28 +320,33 @@ msgstr "Rozšírené"
msgid "Export your subscriptions and categories as an OPML file that can be imported in other feed reading services" 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" 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/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
msgid "Feed URL" msgid "Feed URL"
msgstr "URL informačného kanála" 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 #: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now" msgid "Fetch all my feeds now"
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr ""
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
msgid "Filtering expression" msgid "Filtering expression"
msgstr "Filtrovanie výrazu" msgstr "Filtrovanie výrazu"
#: src/pages/app/AboutPage.tsx
msgid "For those of you who prefer bitcoin, here is the address: {bitcoinAddress}"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Forgot password?" msgid "Forgot password?"
msgstr "Zabudli ste heslo?" msgstr "Zabudli ste heslo?"
@@ -324,17 +367,17 @@ msgstr "Vygenerujte nový kľúč API"
msgid "Generated feed url" msgid "Generated feed url"
msgstr "Generovaná adresa URL informačného kanála" msgstr "Generovaná adresa URL informačného kanála"
#: src/pages/app/AboutPage.tsx #: src/components/content/FeedEntryContextMenu.tsx
msgid "Go to the API documentation." msgid "Go to {0}"
msgstr "Prejdite na dokumentáciu API." msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Go to the All view" msgid "Go to the All view"
msgstr "Prejdite na zobrazenie Všetky" msgstr "Prejdite na zobrazenie Všetky"
#: src/components/content/FeedEntryContextMenu.tsx #: src/pages/app/AboutPage.tsx
msgid "Go to {0}" msgid "Go to the API documentation."
msgstr "" msgstr "Prejdite na dokumentáciu API."
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "Goodies" msgid "Goodies"
@@ -352,10 +395,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." 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." 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 #: src/components/content/add/ImportOpml.tsx
msgid "Import" msgid "Import"
msgstr "" msgstr ""
@@ -491,6 +530,7 @@ msgid "Newest first"
msgstr "Najnovšie ako prvé" msgstr "Najnovšie ako prvé"
#: src/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
#: src/components/header/Header.tsx
msgid "Next" msgid "Next"
msgstr "Ďalej" msgstr "Ďalej"
@@ -510,19 +550,6 @@ msgstr "Žiadne ďalšie záznamy"
msgid "Nothing found" msgid "Nothing found"
msgstr "Nič sa nenašlo" 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 #: src/pages/app/AboutPage.tsx
msgid "Oldest first" msgid "Oldest first"
msgstr "Najprv najstarší" msgstr "Najprv najstarší"
@@ -531,6 +558,10 @@ msgstr "Najprv najstarší"
msgid "Oops!" msgid "Oops!"
msgstr "Ojoj!" msgstr "Ojoj!"
#: src/components/header/Header.tsx
msgid "Open CommaFeed"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Open current entry in a new tab" msgid "Open current entry in a new tab"
msgstr "Otvorte aktuálny záznam na novej karte" msgstr "Otvorte aktuálny záznam na novej karte"
@@ -563,6 +594,19 @@ msgstr "Otvoriť predchádzajúci záznam"
msgid "Open/close current entry" msgid "Open/close current entry"
msgstr "Otvoriť/zatvoriť aktuálny záznam" 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 #: src/pages/app/AboutPage.tsx
msgid "Order" msgid "Order"
msgstr "Poriadok" msgstr "Poriadok"
@@ -596,14 +640,14 @@ msgstr "Heslá sa nezhodujú"
msgid "Position" msgid "Position"
msgstr "Pozícia" msgstr "Pozícia"
#: src/components/header/Header.tsx
msgid "Previous"
msgstr ""
#: src/pages/app/SettingsPage.tsx #: src/pages/app/SettingsPage.tsx
msgid "Profile" msgid "Profile"
msgstr "Profil" msgstr "Profil"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/pages/auth/PasswordRecoveryPage.tsx #: src/pages/auth/PasswordRecoveryPage.tsx
msgid "Recover password" msgid "Recover password"
msgstr "Obnoviť heslo" msgstr "Obnoviť heslo"
@@ -617,11 +661,16 @@ msgstr "Obnoviť"
msgid "Registrations are closed on this CommaFeed instance" msgid "Registrations are closed on this CommaFeed instance"
msgstr "V tejto inštancii CommaFeed sú registrácie uzavreté" msgstr "V tejto inštancii CommaFeed sú registrácie uzavreté"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click" msgid "Right click"
msgstr "" msgstr ""
#: src/components/admin/UserEdit.tsx #: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx #: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
@@ -719,14 +768,14 @@ msgstr "S hviezdičkou"
msgid "Subscribe" msgid "Subscribe"
msgstr "Prihlásiť sa" msgstr "Prihlásiť sa"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "URL na odber"
#: src/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
msgid "Subscribe to the feed" msgid "Subscribe to the feed"
msgstr "Prihláste sa na odber kanála" msgstr "Prihláste sa na odber kanála"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "URL na odber"
#: src/components/Alert.tsx #: src/components/Alert.tsx
msgid "Success" msgid "Success"
msgstr "Úspech" msgstr "Úspech"
@@ -736,10 +785,12 @@ msgid "Swipe header to the right"
msgstr "" msgstr ""
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to dark theme" msgid "Switch to dark theme"
msgstr "Prepnúť na tmavú tému" msgstr "Prepnúť na tmavú tému"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to light theme" msgid "Switch to light theme"
msgstr "Prepnite na svetlú tému" msgstr "Prepnite na svetlú tému"
@@ -759,6 +810,10 @@ msgstr "Téma"
msgid "Toggle read status of current entry" msgid "Toggle read status of current entry"
msgstr "Prepne stav čítania aktuálneho záznamu" msgstr "Prepne stav čítania aktuálneho záznamu"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Toggle sidebar"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Try out CommaFeed with the demo account: demo/demo" msgid "Try out CommaFeed with the demo account: demo/demo"
msgstr "Vyskúšajte CommaFeed s demo účtom: demo/demo" msgstr "Vyskúšajte CommaFeed s demo účtom: demo/demo"
@@ -781,15 +836,15 @@ msgstr "Odobrať hviezdičku"
msgid "Unsubscribe" msgid "Unsubscribe"
msgstr "Zrušte odber" 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
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "User Name or E-mail" msgid "User Name or E-mail"
msgstr "Meno používateľa alebo 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 #: src/components/Alert.tsx
msgid "Warning" msgid "Warning"
msgstr "Varovanie" msgstr "Varovanie"
@@ -805,11 +860,3 @@ msgstr "Zatiaľ nemáte žiadne odbery. "
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh." msgid "Your feeds have been queued for refresh."
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr ""
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""

View File

@@ -13,6 +13,14 @@ msgstr ""
"Language-Team: \n" "Language-Team: \n"
"Plural-Forms: \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 #: src/pages/app/FeedDetailsPage.tsx
msgid "<0>Complete syntax is available </0><1>here</1>." msgid "<0>Complete syntax is available </0><1>here</1>."
msgstr "" msgstr ""
@@ -21,14 +29,14 @@ msgstr ""
msgid "<0>Have an account?</0><1>Log in!</1>" msgid "<0>Have an account?</0><1>Log in!</1>"
msgstr "<0>Har du ett konto?</0><1>Logga 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 #: src/pages/auth/LoginPage.tsx
msgid "<0>Need an account?</0><1>Sign up!</1>" msgid "<0>Need an account?</0><1>Sign up!</1>"
msgstr "<0>Behöver du ett konto?</0><1>Registrera dig!</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/components/header/ProfileMenu.tsx
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "About" msgid "About"
@@ -63,6 +71,10 @@ msgstr ""
msgid "All" msgid "All"
msgstr "Alla" msgstr "Alla"
#: src/components/settings/DisplaySettings.tsx
msgid "Always scroll selected entry to the top of the page, even if it fits entirely on screen"
msgstr ""
#: src/pages/auth/PasswordRecoveryPage.tsx #: src/pages/auth/PasswordRecoveryPage.tsx
msgid "An email has been sent if this address was registered. Check your inbox." msgid "An email has been sent if this address was registered. Check your inbox."
msgstr "Ett e-postmeddelande har skickats om denna adress var registrerad. " msgstr "Ett e-postmeddelande har skickats om denna adress var registrerad. "
@@ -75,6 +87,10 @@ msgstr "En opml-fil är en XML-fil som innehåller feed-URL:er och kategorier. "
msgid "Analyze feed" msgid "Analyze feed"
msgstr "Analysera foder" msgstr "Analysera foder"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "API-nyckel"
#: src/pages/app/CategoryDetailsPage.tsx #: src/pages/app/CategoryDetailsPage.tsx
msgid "Are you sure you want to delete category <0>{categoryName}</0>?" 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>?" msgstr "Är du säker på att du vill ta bort kategori <0>{categoryName}</0>?"
@@ -115,14 +131,19 @@ msgstr "Tillbaka"
msgid "Back to log in" msgid "Back to log in"
msgstr "Tillbaka för att logga in" msgstr "Tillbaka för att logga in"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required for Chrome"
msgstr ""
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "Browser extentions" msgid "Browser extention"
msgstr "Webbläsartillägg" msgstr ""
#: src/components/admin/UserEdit.tsx #: src/components/admin/UserEdit.tsx
#: src/components/content/add/AddCategory.tsx #: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx #: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx #: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx #: src/pages/admin/AdminUsersPage.tsx
@@ -151,15 +172,15 @@ msgid "Check that the feed is working"
msgstr "Kontrollera att matningen fungerar" msgstr "Kontrollera att matningen fungerar"
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>." msgid "CommaFeed browser extension version {browserExtensionVersion}."
msgstr "CommaFeed är ett projekt med öppen källkod. " msgstr ""
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item" msgid "CommaFeed next unread item"
msgstr "CommaFeed nästa olästa objekt" msgstr "CommaFeed nästa olästa objekt"
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed version {version} ({revision})" msgid "CommaFeed version {version} ({revision})."
msgstr "" msgstr ""
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
@@ -194,6 +215,18 @@ msgstr ""
msgid "Current password" msgid "Current password"
msgstr "Aktuellt lösenord" 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 #: src/pages/admin/AdminUsersPage.tsx
msgid "Date created" msgid "Date created"
msgstr "Datum skapat" msgstr "Datum skapat"
@@ -202,15 +235,15 @@ msgstr "Datum skapat"
msgid "Delete" msgid "Delete"
msgstr "Ta bort" 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
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
msgid "Delete account" msgid "Delete account"
msgstr "Radera konto" msgstr "Radera konto"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Ta bort kategori"
#: src/pages/admin/AdminUsersPage.tsx #: src/pages/admin/AdminUsersPage.tsx
msgid "Delete user" msgid "Delete user"
msgstr "Ta bort användare" msgstr "Ta bort användare"
@@ -228,6 +261,11 @@ msgstr ""
msgid "Display" msgid "Display"
msgstr "Visa" msgstr "Visa"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/DonatePage.tsx
msgid "Donate"
msgstr ""
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
msgid "Download" msgid "Download"
msgstr "Ladda ner" msgstr "Ladda ner"
@@ -282,28 +320,33 @@ msgstr "Utökad"
msgid "Export your subscriptions and categories as an OPML file that can be imported in other feed reading services" 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" 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/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
msgid "Feed URL" msgid "Feed URL"
msgstr "Flödes-URL" msgstr "Flödes-URL"
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "Flödesnamn"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now" msgid "Fetch all my feeds now"
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "fil krävs"
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
msgid "Filtering expression" msgid "Filtering expression"
msgstr "Filtrerande uttryck" msgstr "Filtrerande uttryck"
#: src/pages/app/AboutPage.tsx
msgid "For those of you who prefer bitcoin, here is the address: {bitcoinAddress}"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Forgot password?" msgid "Forgot password?"
msgstr "Glömt lösenord?" msgstr "Glömt lösenord?"
@@ -324,17 +367,17 @@ msgstr "Generera ny API-nyckel"
msgid "Generated feed url" msgid "Generated feed url"
msgstr "Genererad feed-url" msgstr "Genererad feed-url"
#: src/pages/app/AboutPage.tsx #: src/components/content/FeedEntryContextMenu.tsx
msgid "Go to the API documentation." msgid "Go to {0}"
msgstr "Gå till API-dokumentationen." msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Go to the All view" msgid "Go to the All view"
msgstr "Gå till vyn Alla" msgstr "Gå till vyn Alla"
#: src/components/content/FeedEntryContextMenu.tsx #: src/pages/app/AboutPage.tsx
msgid "Go to {0}" msgid "Go to the API documentation."
msgstr "" msgstr "Gå till API-dokumentationen."
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "Goodies" msgid "Goodies"
@@ -352,10 +395,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." 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." 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 #: src/components/content/add/ImportOpml.tsx
msgid "Import" msgid "Import"
msgstr "" msgstr ""
@@ -491,6 +530,7 @@ msgid "Newest first"
msgstr "Nyast först" msgstr "Nyast först"
#: src/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
#: src/components/header/Header.tsx
msgid "Next" msgid "Next"
msgstr "Nästa" msgstr "Nästa"
@@ -510,19 +550,6 @@ msgstr "Inga fler poster"
msgid "Nothing found" msgid "Nothing found"
msgstr "Inget hittades" 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 #: src/pages/app/AboutPage.tsx
msgid "Oldest first" msgid "Oldest first"
msgstr "Äldst först" msgstr "Äldst först"
@@ -531,6 +558,10 @@ msgstr "Äldst först"
msgid "Oops!" msgid "Oops!"
msgstr "Hoppsan!" msgstr "Hoppsan!"
#: src/components/header/Header.tsx
msgid "Open CommaFeed"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Open current entry in a new tab" msgid "Open current entry in a new tab"
msgstr "Öppna aktuell post i en ny flik" msgstr "Öppna aktuell post i en ny flik"
@@ -563,6 +594,19 @@ msgstr "Öppna föregående post"
msgid "Open/close current entry" msgid "Open/close current entry"
msgstr "Öppna/stäng aktuell ingång" 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 #: src/pages/app/AboutPage.tsx
msgid "Order" msgid "Order"
msgstr "Beställning" msgstr "Beställning"
@@ -596,14 +640,14 @@ msgstr "Lösenorden matchar inte"
msgid "Position" msgid "Position"
msgstr "" msgstr ""
#: src/components/header/Header.tsx
msgid "Previous"
msgstr ""
#: src/pages/app/SettingsPage.tsx #: src/pages/app/SettingsPage.tsx
msgid "Profile" msgid "Profile"
msgstr "Profil" msgstr "Profil"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/pages/auth/PasswordRecoveryPage.tsx #: src/pages/auth/PasswordRecoveryPage.tsx
msgid "Recover password" msgid "Recover password"
msgstr "Återställ lösenord" msgstr "Återställ lösenord"
@@ -617,11 +661,16 @@ msgstr "Uppdatera"
msgid "Registrations are closed on this CommaFeed instance" msgid "Registrations are closed on this CommaFeed instance"
msgstr "Registreringar är stängda på denna CommaFeed-instans" msgstr "Registreringar är stängda på denna CommaFeed-instans"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click" msgid "Right click"
msgstr "" msgstr ""
#: src/components/admin/UserEdit.tsx #: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx #: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
@@ -719,14 +768,14 @@ msgstr "Starmed"
msgid "Subscribe" msgid "Subscribe"
msgstr "Prenumerera" msgstr "Prenumerera"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "Prenumerera URL"
#: src/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
msgid "Subscribe to the feed" msgid "Subscribe to the feed"
msgstr "Prenumerera på flödet" msgstr "Prenumerera på flödet"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "Prenumerera URL"
#: src/components/Alert.tsx #: src/components/Alert.tsx
msgid "Success" msgid "Success"
msgstr "Framgång" msgstr "Framgång"
@@ -736,10 +785,12 @@ msgid "Swipe header to the right"
msgstr "" msgstr ""
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to dark theme" msgid "Switch to dark theme"
msgstr "Byt till mörkt tema" msgstr "Byt till mörkt tema"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to light theme" msgid "Switch to light theme"
msgstr "Byt till ljustema" msgstr "Byt till ljustema"
@@ -759,6 +810,10 @@ msgstr "Tema"
msgid "Toggle read status of current entry" msgid "Toggle read status of current entry"
msgstr "Växla lässtatus för aktuell post" msgstr "Växla lässtatus för aktuell post"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Toggle sidebar"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Try out CommaFeed with the demo account: demo/demo" msgid "Try out CommaFeed with the demo account: demo/demo"
msgstr "Prova CommaFeed med demokontot: demo/demo" msgstr "Prova CommaFeed med demokontot: demo/demo"
@@ -781,15 +836,15 @@ msgstr ""
msgid "Unsubscribe" msgid "Unsubscribe"
msgstr "Avregistrera" msgstr "Avregistrera"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Användarnamn"
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "User Name or E-mail" msgid "User Name or E-mail"
msgstr "Användarnamn eller e-post" msgstr "Användarnamn eller e-post"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Användarnamn"
#: src/components/Alert.tsx #: src/components/Alert.tsx
msgid "Warning" msgid "Warning"
msgstr "Varning" msgstr "Varning"
@@ -805,11 +860,3 @@ msgstr "Du har inga prenumerationer än. "
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh." msgid "Your feeds have been queued for refresh."
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "fil krävs"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""

View File

@@ -13,6 +13,14 @@ msgstr ""
"Language-Team: \n" "Language-Team: \n"
"Plural-Forms: \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 #: src/pages/app/FeedDetailsPage.tsx
msgid "<0>Complete syntax is available </0><1>here</1>." msgid "<0>Complete syntax is available </0><1>here</1>."
msgstr "" msgstr ""
@@ -21,14 +29,14 @@ msgstr ""
msgid "<0>Have an account?</0><1>Log in!</1>" msgid "<0>Have an account?</0><1>Log in!</1>"
msgstr "<0>Hesabınız var mı?</0><1>Giriş yapın!</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 #: src/pages/auth/LoginPage.tsx
msgid "<0>Need an account?</0><1>Sign up!</1>" msgid "<0>Need an account?</0><1>Sign up!</1>"
msgstr "<0>Bir hesaba mı ihtiyacınız var?</0><1>Kaydolun!</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/components/header/ProfileMenu.tsx
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "About" msgid "About"
@@ -63,6 +71,10 @@ msgstr "Yönetici"
msgid "All" msgid "All"
msgstr "Tümü" msgstr "Tümü"
#: src/components/settings/DisplaySettings.tsx
msgid "Always scroll selected entry to the top of the page, even if it fits entirely on screen"
msgstr ""
#: src/pages/auth/PasswordRecoveryPage.tsx #: src/pages/auth/PasswordRecoveryPage.tsx
msgid "An email has been sent if this address was registered. Check your inbox." msgid "An email has been sent if this address was registered. Check your inbox."
msgstr "Bu adres kayıtlıysa bir e-posta gönderildi. " msgstr "Bu adres kayıtlıysa bir e-posta gönderildi. "
@@ -75,6 +87,10 @@ msgstr "Bir opml dosyası, besleme URL'lerini ve kategorilerini içeren bir XML
msgid "Analyze feed" msgid "Analyze feed"
msgstr "Feed'i analiz et" msgstr "Feed'i analiz et"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "API anahtarı"
#: src/pages/app/CategoryDetailsPage.tsx #: src/pages/app/CategoryDetailsPage.tsx
msgid "Are you sure you want to delete category <0>{categoryName}</0>?" msgid "Are you sure you want to delete category <0>{categoryName}</0>?"
msgstr "<0>{categoryName}</0> kategorisini silmek istediğinizden emin misiniz?" msgstr "<0>{categoryName}</0> kategorisini silmek istediğinizden emin misiniz?"
@@ -115,14 +131,19 @@ msgstr "Geri"
msgid "Back to log in" msgid "Back to log in"
msgstr "Giriş yapmak için geri dön" msgstr "Giriş yapmak için geri dön"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required for Chrome"
msgstr ""
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "Browser extentions" msgid "Browser extention"
msgstr "Tarayıcı uzantıları" msgstr ""
#: src/components/admin/UserEdit.tsx #: src/components/admin/UserEdit.tsx
#: src/components/content/add/AddCategory.tsx #: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx #: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx #: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx #: src/pages/admin/AdminUsersPage.tsx
@@ -151,16 +172,16 @@ msgid "Check that the feed is working"
msgstr "Feed'in çalışıp çalışmadığını kontrol edin" msgstr "Feed'in çalışıp çalışmadığını kontrol edin"
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>." msgid "CommaFeed browser extension version {browserExtensionVersion}."
msgstr "CommaFeed açık kaynaklı bir projedir. " msgstr ""
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item" msgid "CommaFeed next unread item"
msgstr "CommaFeed sonraki okunmamış öğe" msgstr "CommaFeed sonraki okunmamış öğe"
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed version {version} ({revision})" msgid "CommaFeed version {version} ({revision})."
msgstr "CommaFeed sürümü {sürüm} ({revizyon})" msgstr ""
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Compact" msgid "Compact"
@@ -194,6 +215,18 @@ msgstr ""
msgid "Current password" msgid "Current password"
msgstr "Geçerli şifre" 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 #: src/pages/admin/AdminUsersPage.tsx
msgid "Date created" msgid "Date created"
msgstr "Oluşturulma tarihi" msgstr "Oluşturulma tarihi"
@@ -202,15 +235,15 @@ msgstr "Oluşturulma tarihi"
msgid "Delete" msgid "Delete"
msgstr "Sil" msgstr "Sil"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Kategoriyi Sil"
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
msgid "Delete account" msgid "Delete account"
msgstr "Hesabı sil" msgstr "Hesabı sil"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "Kategoriyi Sil"
#: src/pages/admin/AdminUsersPage.tsx #: src/pages/admin/AdminUsersPage.tsx
msgid "Delete user" msgid "Delete user"
msgstr "Kullanıcıyı sil" msgstr "Kullanıcıyı sil"
@@ -228,6 +261,11 @@ msgstr ""
msgid "Display" msgid "Display"
msgstr "Ekran" msgstr "Ekran"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/DonatePage.tsx
msgid "Donate"
msgstr ""
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
msgid "Download" msgid "Download"
msgstr "İndir" msgstr "İndir"
@@ -282,28 +320,33 @@ msgstr "Genişletilmiş"
msgid "Export your subscriptions and categories as an OPML file that can be imported in other feed reading services" 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" 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/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
msgid "Feed URL" msgid "Feed URL"
msgstr "Feed URL'si" msgstr "Feed URL'si"
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "Yayın adı"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now" msgid "Fetch all my feeds now"
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "dosya gerekli"
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
msgid "Filtering expression" msgid "Filtering expression"
msgstr "Filtreleme ifadesi" msgstr "Filtreleme ifadesi"
#: src/pages/app/AboutPage.tsx
msgid "For those of you who prefer bitcoin, here is the address: {bitcoinAddress}"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Forgot password?" msgid "Forgot password?"
msgstr "Parolanızı mı unuttunuz?" msgstr "Parolanızı mı unuttunuz?"
@@ -324,17 +367,17 @@ msgstr "Yeni API anahtarı oluştur"
msgid "Generated feed url" msgid "Generated feed url"
msgstr "Oluşturulan besleme url'si" msgstr "Oluşturulan besleme url'si"
#: src/pages/app/AboutPage.tsx #: src/components/content/FeedEntryContextMenu.tsx
msgid "Go to the API documentation." msgid "Go to {0}"
msgstr "API belgelerine gidin." msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Go to the All view" msgid "Go to the All view"
msgstr "Tümü görünümüne git" msgstr "Tümü görünümüne git"
#: src/components/content/FeedEntryContextMenu.tsx #: src/pages/app/AboutPage.tsx
msgid "Go to {0}" msgid "Go to the API documentation."
msgstr "" msgstr "API belgelerine gidin."
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "Goodies" msgid "Goodies"
@@ -352,10 +395,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." 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." 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 #: src/components/content/add/ImportOpml.tsx
msgid "Import" msgid "Import"
msgstr "İçe Aktar" msgstr "İçe Aktar"
@@ -491,6 +530,7 @@ msgid "Newest first"
msgstr "Önce en yenisi" msgstr "Önce en yenisi"
#: src/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
#: src/components/header/Header.tsx
msgid "Next" msgid "Next"
msgstr "Sonraki" msgstr "Sonraki"
@@ -510,19 +550,6 @@ msgstr "Başka giriş yok"
msgid "Nothing found" msgid "Nothing found"
msgstr "Hiçbir şey bulunamadı" 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 #: src/pages/app/AboutPage.tsx
msgid "Oldest first" msgid "Oldest first"
msgstr "Önce en eski" msgstr "Önce en eski"
@@ -531,6 +558,10 @@ msgstr "Önce en eski"
msgid "Oops!" msgid "Oops!"
msgstr "Hata!" msgstr "Hata!"
#: src/components/header/Header.tsx
msgid "Open CommaFeed"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Open current entry in a new tab" msgid "Open current entry in a new tab"
msgstr "Geçerli girişi yeni bir sekmede aç" msgstr "Geçerli girişi yeni bir sekmede aç"
@@ -563,6 +594,19 @@ msgstr "Önceki girişi aç"
msgid "Open/close current entry" msgid "Open/close current entry"
msgstr "Geçerli girişi aç/kapat" 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 #: src/pages/app/AboutPage.tsx
msgid "Order" msgid "Order"
msgstr "Sipariş" msgstr "Sipariş"
@@ -596,14 +640,14 @@ msgstr "Parolalar eşleşmiyor"
msgid "Position" msgid "Position"
msgstr "Konum" msgstr "Konum"
#: src/components/header/Header.tsx
msgid "Previous"
msgstr ""
#: src/pages/app/SettingsPage.tsx #: src/pages/app/SettingsPage.tsx
msgid "Profile" msgid "Profile"
msgstr "Profil" msgstr "Profil"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/pages/auth/PasswordRecoveryPage.tsx #: src/pages/auth/PasswordRecoveryPage.tsx
msgid "Recover password" msgid "Recover password"
msgstr "Şifreyi kurtar" msgstr "Şifreyi kurtar"
@@ -617,11 +661,16 @@ msgstr "Yenile"
msgid "Registrations are closed on this CommaFeed instance" msgid "Registrations are closed on this CommaFeed instance"
msgstr "Bu CommaFeed örneğinde kayıtlar kapalı" msgstr "Bu CommaFeed örneğinde kayıtlar kapalı"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click" msgid "Right click"
msgstr "" msgstr ""
#: src/components/admin/UserEdit.tsx #: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx #: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
@@ -719,14 +768,14 @@ msgstr "Yıldızlı"
msgid "Subscribe" msgid "Subscribe"
msgstr "Abone ol" msgstr "Abone ol"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "Abone URL'si"
#: src/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
msgid "Subscribe to the feed" msgid "Subscribe to the feed"
msgstr "beslemeye abone olun" msgstr "beslemeye abone olun"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "Abone URL'si"
#: src/components/Alert.tsx #: src/components/Alert.tsx
msgid "Success" msgid "Success"
msgstr "Başarı" msgstr "Başarı"
@@ -736,10 +785,12 @@ msgid "Swipe header to the right"
msgstr "" msgstr ""
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to dark theme" msgid "Switch to dark theme"
msgstr "Karanlık temaya geç" msgstr "Karanlık temaya geç"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to light theme" msgid "Switch to light theme"
msgstr "Açık temaya geç" msgstr "Açık temaya geç"
@@ -759,6 +810,10 @@ msgstr "Tema"
msgid "Toggle read status of current entry" msgid "Toggle read status of current entry"
msgstr "Geçerli girişin okuma durumunu değiştir" msgstr "Geçerli girişin okuma durumunu değiştir"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Toggle sidebar"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Try out CommaFeed with the demo account: demo/demo" msgid "Try out CommaFeed with the demo account: demo/demo"
msgstr "CommaFeed'i demo hesabıyla deneyin: demo/demo" msgstr "CommaFeed'i demo hesabıyla deneyin: demo/demo"
@@ -781,15 +836,15 @@ msgstr "Yıldızı kaldır"
msgid "Unsubscribe" msgid "Unsubscribe"
msgstr "Aboneliği iptal et" 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
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "User Name or E-mail" msgid "User Name or E-mail"
msgstr "Kullanıcı Adı veya E-posta" msgstr "Kullanıcı Adı veya E-posta"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "Kullanıcı adı"
#: src/components/Alert.tsx #: src/components/Alert.tsx
msgid "Warning" msgid "Warning"
msgstr "Uyarı" msgstr "Uyarı"
@@ -805,11 +860,3 @@ msgstr "Henüz aboneliğiniz yok. "
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh." msgid "Your feeds have been queued for refresh."
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "dosya gerekli"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""

View File

@@ -13,6 +13,14 @@ msgstr ""
"Language-Team: \n" "Language-Team: \n"
"Plural-Forms: \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 #: src/pages/app/FeedDetailsPage.tsx
msgid "<0>Complete syntax is available </0><1>here</1>." msgid "<0>Complete syntax is available </0><1>here</1>."
msgstr "" msgstr ""
@@ -21,14 +29,14 @@ msgstr ""
msgid "<0>Have an account?</0><1>Log in!</1>" msgid "<0>Have an account?</0><1>Log in!</1>"
msgstr "<0>有帐号吗?</0><1>登录!</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 #: src/pages/auth/LoginPage.tsx
msgid "<0>Need an account?</0><1>Sign up!</1>" msgid "<0>Need an account?</0><1>Sign up!</1>"
msgstr "<0>需要一个帐户?</0><1>注册!</1>" msgstr "<0>需要一个帐户?</0><1>注册!</1>"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "API 密钥"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "About" msgid "About"
@@ -63,6 +71,10 @@ msgstr "管理员"
msgid "All" msgid "All"
msgstr "全部" msgstr "全部"
#: src/components/settings/DisplaySettings.tsx
msgid "Always scroll selected entry to the top of the page, even if it fits entirely on screen"
msgstr ""
#: src/pages/auth/PasswordRecoveryPage.tsx #: src/pages/auth/PasswordRecoveryPage.tsx
msgid "An email has been sent if this address was registered. Check your inbox." msgid "An email has been sent if this address was registered. Check your inbox."
msgstr "如果此地址已注册,则已发送电子邮件。" msgstr "如果此地址已注册,则已发送电子邮件。"
@@ -75,6 +87,10 @@ msgstr "opml 文件是包含提要 URL 和类别的 XML 文件。"
msgid "Analyze feed" msgid "Analyze feed"
msgstr "分析饲料" msgstr "分析饲料"
#: src/components/settings/ProfileSettings.tsx
msgid "API key"
msgstr "API 密钥"
#: src/pages/app/CategoryDetailsPage.tsx #: src/pages/app/CategoryDetailsPage.tsx
msgid "Are you sure you want to delete category <0>{categoryName}</0>?" msgid "Are you sure you want to delete category <0>{categoryName}</0>?"
msgstr "您确定要删除类别<0>{categoryName}</0>吗?" msgstr "您确定要删除类别<0>{categoryName}</0>吗?"
@@ -115,14 +131,19 @@ msgstr "返回"
msgid "Back to log in" msgid "Back to log in"
msgstr "返回登录" msgstr "返回登录"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required for Chrome"
msgstr ""
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "Browser extentions" msgid "Browser extention"
msgstr "浏览器扩展" msgstr ""
#: src/components/admin/UserEdit.tsx #: src/components/admin/UserEdit.tsx
#: src/components/content/add/AddCategory.tsx #: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx #: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx #: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx #: src/pages/admin/AdminUsersPage.tsx
@@ -151,16 +172,16 @@ msgid "Check that the feed is working"
msgstr "检查提要是否正常工作" msgstr "检查提要是否正常工作"
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>." msgid "CommaFeed browser extension version {browserExtensionVersion}."
msgstr "CommaFeed 是一个开源项目。" msgstr ""
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item" msgid "CommaFeed next unread item"
msgstr "CommaFeed 下一个未读项目" msgstr "CommaFeed 下一个未读项目"
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "CommaFeed version {version} ({revision})" msgid "CommaFeed version {version} ({revision})."
msgstr "CommaFeed 版本 {version} ({revision})" msgstr ""
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Compact" msgid "Compact"
@@ -194,6 +215,18 @@ msgstr "控制"
msgid "Current password" msgid "Current password"
msgstr "当前密码" 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 #: src/pages/admin/AdminUsersPage.tsx
msgid "Date created" msgid "Date created"
msgstr "创建日期" msgstr "创建日期"
@@ -202,15 +235,15 @@ msgstr "创建日期"
msgid "Delete" msgid "Delete"
msgstr "删除" msgstr "删除"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "删除类别"
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
msgid "Delete account" msgid "Delete account"
msgstr "删除帐号" msgstr "删除帐号"
#: src/pages/app/CategoryDetailsPage.tsx
msgid "Delete Category"
msgstr "删除类别"
#: src/pages/admin/AdminUsersPage.tsx #: src/pages/admin/AdminUsersPage.tsx
msgid "Delete user" msgid "Delete user"
msgstr "删除用户" msgstr "删除用户"
@@ -228,6 +261,11 @@ msgstr ""
msgid "Display" msgid "Display"
msgstr "显示" msgstr "显示"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/DonatePage.tsx
msgid "Donate"
msgstr ""
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
msgid "Download" msgid "Download"
msgstr "下载" msgstr "下载"
@@ -282,28 +320,33 @@ msgstr "展开"
msgid "Export your subscriptions and categories as an OPML file that can be imported in other feed reading services" msgid "Export your subscriptions and categories as an OPML file that can be imported in other feed reading services"
msgstr "将您的订阅和类别导出为 OPML 文件,可以在其他提要阅读服务中导入" 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/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
msgid "Feed URL" msgid "Feed URL"
msgstr "供稿网址" msgstr "供稿网址"
#: src/components/content/add/Subscribe.tsx
msgid "Feed name"
msgstr "提要名称"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now" msgid "Fetch all my feeds now"
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "文件是必需的"
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
msgid "Filtering expression" msgid "Filtering expression"
msgstr "过滤表达式" msgstr "过滤表达式"
#: src/pages/app/AboutPage.tsx
msgid "For those of you who prefer bitcoin, here is the address: {bitcoinAddress}"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Forgot password?" msgid "Forgot password?"
msgstr "忘记密码?" msgstr "忘记密码?"
@@ -324,17 +367,17 @@ msgstr "生成新的 API 密钥"
msgid "Generated feed url" msgid "Generated feed url"
msgstr "生成的提要网址" msgstr "生成的提要网址"
#: src/pages/app/AboutPage.tsx #: src/components/content/FeedEntryContextMenu.tsx
msgid "Go to the API documentation." msgid "Go to {0}"
msgstr "转到 API 文档。" msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Go to the All view" msgid "Go to the All view"
msgstr "转到全部视图" msgstr "转到全部视图"
#: src/components/content/FeedEntryContextMenu.tsx #: src/pages/app/AboutPage.tsx
msgid "Go to {0}" msgid "Go to the API documentation."
msgstr "" msgstr "转到 API 文档。"
#: src/pages/app/AboutPage.tsx #: src/pages/app/AboutPage.tsx
msgid "Goodies" msgid "Goodies"
@@ -352,10 +395,6 @@ msgstr "如果不为空,则表达式评估为“真”或“假”。"
msgid "If you encounter an issue, please report it on the issues page of the GitHub project." msgid "If you encounter an issue, please report it on the issues page of the GitHub project."
msgstr "如果遇到问题请在GitHub项目的issues页面上报告。" 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 #: src/components/content/add/ImportOpml.tsx
msgid "Import" msgid "Import"
msgstr "进口" msgstr "进口"
@@ -491,6 +530,7 @@ msgid "Newest first"
msgstr "最新优先" msgstr "最新优先"
#: src/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
#: src/components/header/Header.tsx
msgid "Next" msgid "Next"
msgstr "下一个" msgstr "下一个"
@@ -510,19 +550,6 @@ msgstr "没有更多条目"
msgid "Nothing found" msgid "Nothing found"
msgstr "没有找到" 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 #: src/pages/app/AboutPage.tsx
msgid "Oldest first" msgid "Oldest first"
msgstr "最早的优先" msgstr "最早的优先"
@@ -531,6 +558,10 @@ msgstr "最早的优先"
msgid "Oops!" msgid "Oops!"
msgstr "哎呀!" msgstr "哎呀!"
#: src/components/header/Header.tsx
msgid "Open CommaFeed"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Open current entry in a new tab" msgid "Open current entry in a new tab"
msgstr "在新选项卡中打开当前条目" msgstr "在新选项卡中打开当前条目"
@@ -563,6 +594,19 @@ msgstr "打开上一个条目"
msgid "Open/close current entry" msgid "Open/close current entry"
msgstr "打开/关闭当前条目" 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 #: src/pages/app/AboutPage.tsx
msgid "Order" msgid "Order"
msgstr "订单" msgstr "订单"
@@ -596,14 +640,14 @@ msgstr "密码不匹配"
msgid "Position" msgid "Position"
msgstr "位置" msgstr "位置"
#: src/components/header/Header.tsx
msgid "Previous"
msgstr ""
#: src/pages/app/SettingsPage.tsx #: src/pages/app/SettingsPage.tsx
msgid "Profile" msgid "Profile"
msgstr "配置文件" msgstr "配置文件"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/pages/auth/PasswordRecoveryPage.tsx #: src/pages/auth/PasswordRecoveryPage.tsx
msgid "Recover password" msgid "Recover password"
msgstr "找回密码" msgstr "找回密码"
@@ -617,11 +661,16 @@ msgstr "刷新"
msgid "Registrations are closed on this CommaFeed instance" msgid "Registrations are closed on this CommaFeed instance"
msgstr "此 CommaFeed 实例上的注册已关闭" msgstr "此 CommaFeed 实例上的注册已关闭"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click" msgid "Right click"
msgstr "" msgstr ""
#: src/components/admin/UserEdit.tsx #: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx #: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx #: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx #: src/pages/app/FeedDetailsPage.tsx
@@ -719,14 +768,14 @@ msgstr "已加星标"
msgid "Subscribe" msgid "Subscribe"
msgstr "订阅" msgstr "订阅"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "订阅网址"
#: src/components/content/add/Subscribe.tsx #: src/components/content/add/Subscribe.tsx
msgid "Subscribe to the feed" msgid "Subscribe to the feed"
msgstr "订阅订阅源" msgstr "订阅订阅源"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "订阅网址"
#: src/components/Alert.tsx #: src/components/Alert.tsx
msgid "Success" msgid "Success"
msgstr "成功" msgstr "成功"
@@ -736,10 +785,12 @@ msgid "Swipe header to the right"
msgstr "" msgstr ""
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to dark theme" msgid "Switch to dark theme"
msgstr "切换到深色主题" msgstr "切换到深色主题"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
#: src/pages/WelcomePage.tsx
msgid "Switch to light theme" msgid "Switch to light theme"
msgstr "切换到浅色主题" msgstr "切换到浅色主题"
@@ -759,6 +810,10 @@ msgstr "主题"
msgid "Toggle read status of current entry" msgid "Toggle read status of current entry"
msgstr "切换当前条目的读取状态" msgstr "切换当前条目的读取状态"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Toggle sidebar"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Try out CommaFeed with the demo account: demo/demo" msgid "Try out CommaFeed with the demo account: demo/demo"
msgstr "使用演示帐户试用 CommaFeeddemo/demo" msgstr "使用演示帐户试用 CommaFeeddemo/demo"
@@ -781,15 +836,15 @@ msgstr "解星"
msgid "Unsubscribe" msgid "Unsubscribe"
msgstr "取消订阅" msgstr "取消订阅"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "用户名"
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "User Name or E-mail" msgid "User Name or E-mail"
msgstr "用户名或电子邮件" msgstr "用户名或电子邮件"
#: src/components/settings/ProfileSettings.tsx
msgid "User name"
msgstr "用户名"
#: src/components/Alert.tsx #: src/components/Alert.tsx
msgid "Warning" msgid "Warning"
msgstr "警告" msgstr "警告"
@@ -805,11 +860,3 @@ msgstr "您还没有任何订阅。"
#: src/components/header/ProfileMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh." msgid "Your feeds have been queued for refresh."
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx
msgid "file is required"
msgstr "文件是必需的"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
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,11 +1,12 @@
import "@fontsource/open-sans" import "@fontsource/open-sans"
import { App } from "App"
import { store } from "app/store" import { store } from "app/store"
import dayjs from "dayjs" import dayjs from "dayjs"
import relativeTime from "dayjs/plugin/relativeTime" import relativeTime from "dayjs/plugin/relativeTime"
import "main.css"
import "react-contexify/ReactContexify.css" import "react-contexify/ReactContexify.css"
import ReactDOM from "react-dom/client" import ReactDOM from "react-dom/client"
import { Provider } from "react-redux" import { Provider } from "react-redux"
import { App } from "./App"
dayjs.extend(relativeTime) dayjs.extend(relativeTime)

View File

@@ -13,7 +13,7 @@ const useStyles = createStyles(theme => ({
fontWeight: "bold", fontWeight: "bold",
fontSize: 120, fontSize: 120,
lineHeight: 1, lineHeight: 1,
marginBottom: theme.spacing.xl * 1.5, marginBottom: `calc(${theme.spacing.xl} * 1.5)`,
color: theme.colors[theme.primaryColor][3], color: theme.colors[theme.primaryColor][3],
}, },
@@ -27,7 +27,7 @@ const useStyles = createStyles(theme => ({
maxWidth: 540, maxWidth: 540,
margin: "auto", margin: "auto",
marginTop: theme.spacing.xl, 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 { Center, Title } from "@mantine/core"
import { Logo } from "../components/Logo" import { Logo } from "components/Logo"
export function PageTitle() { export function PageTitle() {
return ( return (

View File

@@ -1,23 +1,32 @@
import { t } from "@lingui/macro" import { Trans } from "@lingui/macro"
import { Anchor, Box, Center, Container, Divider, Group, Image, Title, useMantineColorScheme } from "@mantine/core" import { Anchor, Box, Center, Container, Divider, Group, Image, Title, useMantineColorScheme } from "@mantine/core"
import { useMediaQuery } from "@mantine/hooks" import { client } from "app/client"
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_dark from "assets/welcome_page_dark.png"
import welcome_page_light from "assets/welcome_page_light.png" import welcome_page_light from "assets/welcome_page_light.png"
import { ActionButton } from "components/ActionButton"
import { useBrowserExtension } from "hooks/useBrowserExtension"
import { useMobile } from "hooks/useMobile"
import { useAsyncCallback } from "react-async-hook" import { useAsyncCallback } from "react-async-hook"
import { SiGithub, TbKey, TbUserPlus } from "react-icons/all" import { SiGithub, SiTwitter } from "react-icons/si"
import { SiTwitter } from "react-icons/si" import { TbClock, TbKey, TbMoon, TbSettings, TbSun, TbUserPlus } from "react-icons/tb"
import { TbClock, TbMoon, TbSun } from "react-icons/tb"
import { client } from "../app/client"
import { Constants } from "../app/constants"
import { redirectToLogin, redirectToRegistration, redirectToRootCategory } from "../app/slices/redirect"
import { useAppDispatch, useAppSelector } from "../app/store"
import { ActionButton } from "../components/ActionButtton"
import { ButtonToolbar } from "../components/ButtonToolbar"
import { PageTitle } from "./PageTitle" import { PageTitle } from "./PageTitle"
const iconSize = 18
export function WelcomePage() { export function WelcomePage() {
const serverInfos = useAppSelector(state => state.server.serverInfos)
const { colorScheme } = useMantineColorScheme() const { colorScheme } = useMantineColorScheme()
const dispatch = useAppDispatch()
const image = colorScheme === "light" ? welcome_page_light : welcome_page_dark const image = colorScheme === "light" ? welcome_page_light : welcome_page_dark
const login = useAsyncCallback(client.user.login, {
onSuccess: () => {
dispatch(redirectToRootCategory())
},
})
return ( return (
<Container> <Container>
<Header /> <Header />
@@ -26,6 +35,18 @@ export function WelcomePage() {
<Title order={3}>Bloat-free feed reader</Title> <Title order={3}>Bloat-free feed reader</Title>
</Center> </Center>
{serverInfos?.demoAccountEnabled && (
<Center>
<ActionButton
label={<Trans>Try the demo!</Trans>}
icon={<TbClock size={iconSize} />}
variant="outline"
onClick={() => login.execute({ name: "demo", password: "demo" })}
showLabelOnMobile
/>
</Center>
)}
<Divider my="xl" /> <Divider my="xl" />
<Image src={image} /> <Image src={image} />
@@ -38,7 +59,7 @@ export function WelcomePage() {
} }
function Header() { function Header() {
const mobile = !useMediaQuery(`(min-width: ${Constants.layout.mobileBreakpoint}px)`) const mobile = useMobile()
if (mobile) { if (mobile) {
return ( return (
@@ -60,31 +81,16 @@ function Header() {
} }
function Buttons() { function Buttons() {
const iconSize = 18
const serverInfos = useAppSelector(state => state.server.serverInfos) const serverInfos = useAppSelector(state => state.server.serverInfos)
const { colorScheme, toggleColorScheme } = useMantineColorScheme() const { colorScheme, toggleColorScheme } = useMantineColorScheme()
const { isBrowserExtensionPopup, openSettingsPage } = useBrowserExtension()
const dispatch = useAppDispatch() const dispatch = useAppDispatch()
const dark = colorScheme === "dark"
const login = useAsyncCallback(client.user.login, {
onSuccess: () => {
dispatch(redirectToRootCategory())
},
})
return ( return (
<ButtonToolbar> <Group spacing={14}>
{serverInfos?.demoAccountEnabled && (
<ActionButton
label={t`Try the demo!`}
icon={<TbClock size={iconSize} />}
variant="outline"
onClick={() => login.execute({ name: "demo", password: "demo" })}
showLabelOnMobile
/>
)}
<ActionButton <ActionButton
label={t`Log in`} label={<Trans>Log in</Trans>}
icon={<TbKey size={iconSize} />} icon={<TbKey size={iconSize} />}
variant="outline" variant="outline"
onClick={() => dispatch(redirectToLogin())} onClick={() => dispatch(redirectToLogin())}
@@ -92,7 +98,7 @@ function Buttons() {
/> />
{serverInfos?.allowRegistrations && ( {serverInfos?.allowRegistrations && (
<ActionButton <ActionButton
label={t`Sign up`} label={<Trans>Sign up</Trans>}
icon={<TbUserPlus size={iconSize} />} icon={<TbUserPlus size={iconSize} />}
variant="filled" variant="filled"
onClick={() => dispatch(redirectToRegistration())} onClick={() => dispatch(redirectToRegistration())}
@@ -101,19 +107,30 @@ function Buttons() {
)} )}
<ActionButton <ActionButton
label={dark ? <Trans>Switch to light theme</Trans> : <Trans>Switch to dark theme</Trans>}
icon={colorScheme === "dark" ? <TbSun size={18} /> : <TbMoon size={iconSize} />} icon={colorScheme === "dark" ? <TbSun size={18} /> : <TbMoon size={iconSize} />}
onClick={() => toggleColorScheme()} onClick={() => toggleColorScheme()}
hideLabelOnDesktop
/> />
</ButtonToolbar>
{isBrowserExtensionPopup && (
<ActionButton
label={<Trans>Extension options</Trans>}
icon={<TbSettings size={iconSize} />}
onClick={() => openSettingsPage()}
hideLabelOnDesktop
/>
)}
</Group>
) )
} }
function Footer() { function Footer() {
const dispatch = useAppDispatch()
return ( return (
<Box> <Group position="apart">
<Group> <Group>
<span>© CommaFeed</span> <span>© CommaFeed</span>
<span> - </span>
<Anchor variant="text" href="https://github.com/Athou/commafeed/" target="_blank" rel="noreferrer"> <Anchor variant="text" href="https://github.com/Athou/commafeed/" target="_blank" rel="noreferrer">
<SiGithub /> <SiGithub />
</Anchor> </Anchor>
@@ -121,6 +138,11 @@ function Footer() {
<SiTwitter /> <SiTwitter />
</Anchor> </Anchor>
</Group> </Group>
</Box> <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 { ActionIcon, Box, Code, Container, Group, Table, Text, Title, useMantineTheme } from "@mantine/core"
import { closeAllModals, openConfirmModal, openModal } from "@mantine/modals" import { closeAllModals, openConfirmModal, openModal } from "@mantine/modals"
import { client, errorToStrings } from "app/client" import { client, errorToStrings } from "app/client"
@@ -7,6 +7,7 @@ import { UserEdit } from "components/admin/UserEdit"
import { Alert } from "components/Alert" import { Alert } from "components/Alert"
import { Loader } from "components/Loader" import { Loader } from "components/Loader"
import { RelativeDate } from "components/RelativeDate" import { RelativeDate } from "components/RelativeDate"
import { ReactNode } from "react"
import { useAsync, useAsyncCallback } from "react-async-hook" import { useAsync, useAsyncCallback } from "react-async-hook"
import { TbCheck, TbPencil, TbPlus, TbTrash, TbX } from "react-icons/tb" 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({ openModal({
title, title,
children: ( children: (
@@ -45,7 +46,7 @@ export function AdminUsersPage() {
const openUserDeleteModal = (user: UserModel) => { const openUserDeleteModal = (user: UserModel) => {
const userName = user.name const userName = user.name
openConfirmModal({ openConfirmModal({
title: t`Delete user`, title: <Trans>Delete user</Trans>,
children: ( children: (
<Text size="sm"> <Text size="sm">
<Trans> <Trans>
@@ -53,7 +54,7 @@ export function AdminUsersPage() {
</Trans> </Trans>
</Text> </Text>
), ),
labels: { confirm: t`Confirm`, cancel: t`Cancel` }, labels: { confirm: <Trans>Confirm</Trans>, cancel: <Trans>Cancel</Trans> },
confirmProps: { color: "red" }, confirmProps: { color: "red" },
onConfirm: () => deleteUser.execute({ id: user.id }), onConfirm: () => deleteUser.execute({ id: user.id }),
}) })
@@ -65,7 +66,7 @@ export function AdminUsersPage() {
<Title order={3} mb="md"> <Title order={3} mb="md">
<Group> <Group>
<Trans>Manage users</Trans> <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} /> <TbPlus size={20} />
</ActionIcon> </ActionIcon>
</Group> </Group>
@@ -126,7 +127,7 @@ export function AdminUsersPage() {
</td> </td>
<td> <td>
<Group> <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} /> <TbPencil size={18} />
</ActionIcon> </ActionIcon>
<ActionIcon <ActionIcon

View File

@@ -1,6 +1,7 @@
import { Accordion, Tabs } from "@mantine/core" import { Accordion, Box, Tabs } from "@mantine/core"
import { client } from "app/client" import { client } from "app/client"
import { Loader } from "components/Loader" import { Loader } from "components/Loader"
import { Gauge } from "components/metrics/Gauge"
import { Meter } from "components/metrics/Meter" import { Meter } from "components/metrics/Meter"
import { MetricAccordionItem } from "components/metrics/MetricAccordionItem" import { MetricAccordionItem } from "components/metrics/MetricAccordionItem"
import { Timer } from "components/metrics/Timer" import { Timer } from "components/metrics/Timer"
@@ -15,11 +16,19 @@ const shownMeters: { [key: string]: string } = {
"com.commafeed.backend.feed.FeedRefreshUpdater.entryCacheMiss": "Entry cache miss rate", "com.commafeed.backend.feed.FeedRefreshUpdater.entryCacheMiss": "Entry cache miss rate",
} }
const shownGauges: { [key: string]: string } = {
"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",
"com.commafeed.frontend.ws.WebSocketSessions.users": "WebSocket users",
"com.commafeed.frontend.ws.WebSocketSessions.sessions": "WebSocket sessions",
}
export function MetricsPage() { export function MetricsPage() {
const query = useAsync(() => client.admin.getMetrics(), []) const query = useAsync(() => client.admin.getMetrics(), [])
if (!query.result) return <Loader /> if (!query.result) return <Loader />
const { meters, timers } = query.result.data const { meters, gauges, timers } = query.result.data
return ( return (
<Tabs defaultValue="stats"> <Tabs defaultValue="stats">
<Tabs.List> <Tabs.List>
@@ -39,6 +48,15 @@ export function MetricsPage() {
</MetricAccordionItem> </MetricAccordionItem>
))} ))}
</Accordion> </Accordion>
<Box pt="xs">
{Object.keys(shownGauges).map(g => (
<Box key={g}>
<span>{shownGauges[g]}&nbsp;</span>
<Gauge gauge={gauges[g]} />
</Box>
))}
</Box>
</Tabs.Panel> </Tabs.Panel>
<Tabs.Panel value="timers" pt="xs"> <Tabs.Panel value="timers" pt="xs">

View File

@@ -1,10 +1,11 @@
import { t, Trans } from "@lingui/macro" import { t, Trans } from "@lingui/macro"
import { Anchor, Box, Center, Code, 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 { Constants } from "app/constants"
import { redirectToApiDocumentation } from "app/slices/redirect" import { redirectToApiDocumentation } from "app/slices/redirect"
import { useAppDispatch, useAppSelector } from "app/store" import { useAppDispatch, useAppSelector } from "app/store"
import { CategorySelect } from "components/content/add/CategorySelect" import { CategorySelect } from "components/content/add/CategorySelect"
import { KeyboardShortcutsHelp } from "components/KeyboardShortcutsHelp" import { KeyboardShortcutsHelp } from "components/KeyboardShortcutsHelp"
import { useBrowserExtension } from "hooks/useBrowserExtension"
import React, { useState } from "react" import React, { useState } from "react"
import { TbHelp, TbKeyboard, TbPuzzle, TbRocket } from "react-icons/tb" import { TbHelp, TbKeyboard, TbPuzzle, TbRocket } from "react-icons/tb"
@@ -15,7 +16,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() const { classes } = useStyles()
return ( return (
<Box my="xl"> <Box my="xl">
@@ -38,7 +39,7 @@ function NextUnreadBookmarklet() {
return ( return (
<Box> <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 <NativeSelect
data={[ data={[
{ value: "desc", label: t`Newest first` }, { value: "desc", label: t`Newest first` },
@@ -46,7 +47,7 @@ function NextUnreadBookmarklet() {
]} ]}
value={order} value={order}
onChange={e => setOrder(e.target.value)} onChange={e => setOrder(e.target.value)}
description={t`Order`} description={<Trans>Order</Trans>}
/> />
<Trans>Drag link to bookmark bar</Trans> <Trans>Drag link to bookmark bar</Trans>
<span> </span> <span> </span>
@@ -57,23 +58,29 @@ function NextUnreadBookmarklet() {
) )
} }
const bitcoinAddress = <Code>{Constants.bitcoinWalletAddress}</Code>
export function AboutPage() { export function AboutPage() {
const version = useAppSelector(state => state.server.serverInfos?.version) const version = useAppSelector(state => state.server.serverInfos?.version)
const revision = useAppSelector(state => state.server.serverInfos?.gitCommit) const revision = useAppSelector(state => state.server.serverInfos?.gitCommit)
const { isBrowserExtensionInstalled, browserExtensionVersion, isBrowserExtensionInstallable } = useBrowserExtension()
const dispatch = useAppDispatch() const dispatch = useAppDispatch()
return ( return (
<Container size="xl"> <Container size="xl">
<SimpleGrid cols={2} breakpoints={[{ maxWidth: Constants.layout.mobileBreakpoint, cols: 1 }]}> <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> <Box>
<Trans> <Trans>
CommaFeed version {version} ({revision}) CommaFeed version {version} ({revision}).
</Trans> </Trans>
</Box> </Box>
{isBrowserExtensionInstallable && isBrowserExtensionInstalled && (
<Box>
<Trans>CommaFeed browser extension version {browserExtensionVersion}.</Trans>
</Box>
)}
<Box mt="md"> <Box mt="md">
<Trans> <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"> <Anchor href="https://github.com/Athou/commafeed" target="_blank" rel="noreferrer">
GitHub GitHub
</Anchor> </Anchor>
@@ -83,67 +90,13 @@ export function AboutPage() {
<Box> <Box>
<Trans>If you encounter an issue, please report it on the issues page of the GitHub project.</Trans> <Trans>If you encounter an issue, please report it on the issues page of the GitHub project.</Trans>
</Box> </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>
<Box mt="xs">
<Trans>For those of you who prefer bitcoin, here is the address: {bitcoinAddress}</Trans>
</Box>
</Section> </Section>
<Section title={t`Goodies`} icon={<TbPuzzle size={24} />}> <Section title={<Trans>Goodies</Trans>} icon={<TbPuzzle size={24} />}>
<List> <List>
<List.Item> <List.Item>
<Trans>Browser extentions</Trans> <Anchor href={Constants.browserExtensionUrl} target="_blank" rel="noreferrer">
<List withPadding> <Trans>Browser extention</Trans>
<List.Item> </Anchor>
<Anchor
href="https://addons.mozilla.org/en-US/firefox/addon/commafeed/"
target="_blank"
rel="noreferrer"
>
Firefox
</Anchor>
</List.Item>
<List.Item>
<Anchor href="https://github.com/Athou/commafeed-chrome" target="_blank" rel="noreferrer">
Chrome
</Anchor>
</List.Item>
<List.Item>
<Anchor href="https://github.com/Athou/commafeed-opera" target="_blank" rel="noreferrer">
Opera
</Anchor>
</List.Item>
</List>
</List.Item> </List.Item>
<List.Item> <List.Item>
<Trans>Subscribe URL</Trans> <Trans>Subscribe URL</Trans>
@@ -161,10 +114,10 @@ export function AboutPage() {
</List.Item> </List.Item>
</List> </List>
</Section> </Section>
<Section title={t`Keyboard shortcuts`} icon={<TbKeyboard size={24} />}> <Section title={<Trans>Keyboard shortcuts</Trans>} icon={<TbKeyboard size={24} />}>
<KeyboardShortcutsHelp /> <KeyboardShortcutsHelp />
</Section> </Section>
<Section title={t`REST API`} icon={<TbRocket size={24} />}> <Section title={<Trans>REST API</Trans>} icon={<TbRocket size={24} />}>
<Anchor onClick={() => dispatch(redirectToApiDocumentation())}> <Anchor onClick={() => dispatch(redirectToApiDocumentation())}>
<Trans>Go to the API documentation.</Trans> <Trans>Go to the API documentation.</Trans>
</Anchor> </Anchor>

View File

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

View File

@@ -1,8 +1,14 @@
import { Box } from "@mantine/core"
import SwaggerUI from "swagger-ui-react" import SwaggerUI from "swagger-ui-react"
import "swagger-ui-react/swagger-ui.css" import "swagger-ui-react/swagger-ui.css"
function ApiDocumentationPage() { function ApiDocumentationPage() {
return <SwaggerUI url="swagger/swagger.json" /> return (
// force white background because swagger is unreadable with dark theme
<Box style={{ backgroundColor: "#fff" }}>
<SwaggerUI url="swagger/swagger.json" />
</Box>
)
} }
export default ApiDocumentationPage export default ApiDocumentationPage

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

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