File: README.md
Fluent Reader
Download
For Windows 10 users, the recommended way of installation is through Microsoft Store.
This enables auto-update and experimental ARM64 support.
macOS users can also get Fluent Reader from the Mac App Store.
If you are using Linux or an older version of Windows, you can get Fluent Reader from GitHub releases.
Mobile App
The repo of the mobile version of this app can be found here.
Features
- A modern UI inspired by Fluent Design System with full dark mode support.
- Read locally or sync with self-hosted services compatible with Fever or Google Reader API.
- Sync with RSS Services including Inoreader, Feedbin, The Old Reader, BazQux Reader, and more.
- Importing or exporting OPML files, full application data backup & restoration.
- Read the full content with the built-in article view or load webpages by default.
- Search for articles with regular expressions or filter by read status.
- Organize your subscriptions with folder-like groupings.
- Single-key keyboard shortcuts.
- Hide, mark as read, or star articles automatically as they arrive with regular expression rules.
- Fetch articles in the background and send push notifications.
Support for other RSS services are under fundraising.
Development
Contribute
Help make Fluent Reader better by reporting bugs or opening feature requests through GitHub issues.
You can also help internationalize the app by providing translations into additional languages.
Refer to the repo of react-intl-universal to get started on internationalization.
If you enjoy using this app, consider supporting its development by donating through GitHub Sponsors, Paypal, or Alipay.
Build from source
# Install dependencies
npm install
# Compile ts & dependencies
npm run build
# Start the application
npm run electron
# Generate certificate for signature
electron-builder create-self-signed-cert
# Package the app for Windows
npm run package-winDeveloped with
License
BSD
File: AGENTS.md
Fluent Reader
Overview
Fluent Reader is a modern desktop RSS reader built with Electron + React + Redux + TypeScript. It targets Windows, macOS (including Mac App Store), and Linux. The UI uses Microsoft's Fluent UI (v7) component library. Article and source data is stored in a SQLite database (via better-sqlite3 in the main process, accessed from the renderer via drizzle-orm sqlite-proxy). Settings are persisted with electron-store. Articles are parsed with Mercury Parser and fetched via rss-parser.
The repository is ~80 TypeScript/TSX source files under src/. There is no ESLint โ formatting is handled solely by Prettier.
Build & Validate
Always run commands from the repository root.
Install dependencies
npm installRun this before every build. The lockfile (package-lock.json) is gitignored (.lock in .gitignore), so npm install resolves from package.json each time.
Build (compile TypeScript via Webpack)
npm run buildThis runs webpack --config ./webpack.config.js, which produces three bundles in dist/:
electron.jsโ Electron main process (fromsrc/electron.ts)preload.jsโ Preload script (fromsrc/preload.ts)index.js+index.htmlโ Renderer/React app (fromsrc/index.tsx)
Build takes ~30 seconds. A successful build ends with three "compiled successfully" lines โ one per webpack config entry.
Generate DB migrations (only needed when schema changes)
npm run drizzle:generateThis runs drizzle-kit generate using drizzle.config.ts and writes SQL migration files to dist/drizzle/. Run this whenever src/db/schema.ts changes, then commit the generated files. The dist/drizzle/ directory is not gitignored โ migration files are tracked as source.
Run the app
npm run electronOr combined install + build + run:
npm run startFormat check (Prettier)
npx prettier --check .To auto-fix formatting:
npm run formatThe Prettier config is in .prettierrc.yml: 4-space tabs, no semicolons, JSX bracket on same line, arrow parens avoided, consistent quote props. .prettierignore excludes dist/, bin/, node_modules/, HTML, Markdown, and most JSON (except src/**/*.json).
Tests
A private suite of E2E tests is available for project maintainers. Run the suite from the repository root:
npm --prefix tests/e2e testSee tests/README.md for test setup details.
Packaging (not needed for typical changes)
- Windows:
npm run package-win - macOS:
npm run package-mac - Linux:
npm run package-linux - Mac App Store:
npm run package-mas(requires provisioning profile and entitlements inbuild/)
CI/CD
Two GitHub Actions workflows in .github/workflows/:
release-main.ymlโ Triggered on version tags (v*). Runs onwindows-latest. Steps:npm installโnpm run buildโnpm run package-win-ci. Uploads.exeand.zipto a draft GitHub release.release-linux.ymlโ Triggered when a release is published. Runs onubuntu-latest. Steps:npm installโnpm run buildโnpm run package-linux. Uploads.AppImage.
Both CI pipelines run npm install then npm run build. There are no lint or test steps in CI.
Project Layout
Root files
| File | Purpose |
|---|---|
package.json |
Dependencies, scripts, metadata (v1.2.2) |
webpack.config.js |
Three webpack configs: main, preload, renderer |
tsconfig.json |
TypeScript: JSX=react, target=ES2019, module=CommonJS, resolveJsonModule |
drizzle.config.ts |
Drizzle Kit config โ schema at src/db/schema.ts, migrations output to dist/drizzle/ |
electron-builder.yml |
Electron Builder config for Win/Mac/Linux distribution |
electron-builder-mas.yml |
Electron Builder config for Mac App Store |
.prettierrc.yml |
Prettier formatting rules |
.prettierignore |
Files excluded from Prettier |
`src/` โ All source code
| Path | Description |
|---|---|
electron.ts |
Electron main process entry. Creates app menu, initializes WindowManager, calls initDB. |
preload.ts |
Preload script. Exposes settingsBridge, utilsBridge, and dbBridge via contextBridge. |
index.tsx |
Renderer entry. Mounts React <Root> with Redux ``. |
schema-types.ts |
Shared TypeScript enums and types (ViewType, ThemeSettings, StoredRule, etc.) |
db/schema.ts |
Drizzle schema โ defines sourcesTable and itemsTable for better-sqlite3. |
bridges/ |
IPC bridges between renderer and main process (settings.ts, utils.ts, db.ts). |
main/ |
Electron main-process modules: window.ts (BrowserWindow), settings.ts (electron-store + IPC handlers), db.ts (SQLite init, migrations, IPC handler for db:execute, export/import), utils.ts (IPC utilities), touchbar.ts, update-scripts.ts. |
scripts/ |
Renderer-side logic (runs in browser context). |
scripts/reducer.ts |
Root Redux store โ combines: sources, items, feeds, groups, page, service, app. |
scripts/settings.ts |
Theme management, locale setup, Fluent UI theming. |
scripts/db.ts |
Drizzle sqlite-proxy database instance (database). Also contains the one-time LovefieldโSQLite migration (init()), which reads Lovefield IndexedDB, inserts into SQLite via drizzle proxy, then deletes the IndexedDB databases. |
scripts/utils.ts |
Shared utilities and type helpers. |
scripts/models/ |
Redux slices: app.ts, feed.ts, group.ts, item.ts, page.ts, rule.ts, service.ts, source.ts, plus services/ for RSS service integrations. |
scripts/i18n/ |
Internationalization. _locales.ts maps locale codes to JSON files. 19 languages. Translations are JSON files (e.g., en-US.json). Uses react-intl-universal. |
components/ |
React UI components. root.tsx is the top-level layout. Sub-dirs: cards/ (article card variants), feeds/ (feed list views), settings/ (settings panels), utils/ (shared UI helpers). |
containers/ |
Redux-connected container components that map state/dispatch to component props. |
`dist/` โ Build output + static assets
The dist/ directory contains both webpack output and checked-in static assets. Files like dist/icons/, dist/article/, dist/styles/, dist/index.css, dist/fonts.vbs, dist/fontlist, and dist/drizzle/ are static and tracked in git. The webpack-generated files (*.js, *.js.map, *.html, *.LICENSE.txt) are gitignored.
`build/` โ Packaging resources
Contains app icons (build/icons/), macOS entitlements plists, provisioning profiles, and resignAndPackage.sh for Mac App Store builds. Also has build/appx/ for Windows Store assets.
Architecture Notes
- IPC pattern: The renderer never imports Electron directly. All Electron APIs are accessed through
src/bridges/which are exposed viacontextBridgeinpreload.ts. Settings state flows: renderer โ bridge (ipcRenderer) โ main/settings.ts (ipcMain handlers) โ electron-store. - Database: SQLite via better-sqlite3 in the main process. The renderer accesses it through a single
db:executeIPC handler using drizzle-orm's sqlite-proxy pattern. The drizzle instance in the renderer (databasefromscripts/db.ts) sends all queries throughwindow.db.execute(sql, params, method). Schema is defined insrc/db/schema.ts; migrations live indist/drizzle/and are applied at startup viamigrate()inmain/db.ts. The SQLite file is colocated with electron-store'sconfig.json(i.e.,path.dirname(store.path)). - Rules storage: Rules are stored in electron-store under the
sourceRuleskey as aStoredRulesmap. Each value is an orderedStoredRule[].setRulesForTarget()replaces one target's rules in the main process; an empty array removes that entry.getAllRules()loads the map. Source entries are attached toRSSSource.rulesduringinitSources(). - State management: Redux with
redux-thunkfor async actions. The store shape is defined byRootStateinscripts/reducer.ts. Each model file inscripts/models/exports its own reducer, action types, and thunk action creators. - i18n: To add or modify translations, edit JSON files in
src/scripts/i18n/. Register new locales in_locales.ts. - RSS service integrations: Located in
src/scripts/models/services/(logic) andsrc/components/settings/services/(UI). Supported: Fever, Google Reader API (GReader), Inoreader, Feedbin, Miniflux, Nextcloud.
Key Conventions
- All source is TypeScript (
.ts/.tsx). No plain JavaScript insrc/. - No semicolons. 4-space indentation. See
.prettierrc.yml. - Enums use
const enumpattern inschema-types.ts. - Components use both class components and function components (no strict rule).
- Redux containers in
containers/useconnect()from react-redux. - Griffel styling: Use
makeStylesfrom@griffel/reactfor component-scoped styles. ImportmergeClassesfor combining classes. Prefer Griffel over adding new CSS rules todist/styles/. styleClassprop convention: Reusable components expose astyleClass?: stringprop applied to the component's main element, allowing parents to pass Griffel-generated class overrides. If a component has multiple customizable elements, use element-specific prop names (e.g.,buttonStyleClass?: string). Combine base and override classes withmergeClasses.- Flat button components:
FlatButton,FlatButtonGroup, andFlatButtonSeparatorinsrc/components/utils/implement the Griffel +styleClasspattern. Use these instead of raw/with CSS class names for toolbar-style buttons.
Validation Checklist
After any code change, always run:
npm install && npm run build && npx prettier --check .All three must succeed. If the build fails, fix TypeScript errors. If prettier fails, run npm run format then verify.
Run the E2E test suite if available at the end of sessions to check for regressions, and update the test suite to cover any new features built.
Trust these instructions. Only search the codebase if information here is incomplete or found to be incorrect.
File: electron-builder-mas.yml
appId: me.hyliu.fluent-reader-mas
buildVersion: 34
productName: Fluent Reader
copyright: Copyright ยฉ 2020 Haoyuan Liu
files:
- "./dist//*"
- "!./dist/fonts.vbs"
- "!/.js.map"
- "!node_modules/better-sqlite3/prebuilds/linux.node"
- "!node_modules/better-sqlite3/prebuilds/win32-.node"
asarUnpack:
- "./dist/fontlist"
- "node_modules/better-sqlite3/**/"
forceCodeSigning: true
directories:
output: "./bin/${platform}/${arch}/"
mac:
extendInfo:
ElectronTeamID: P2CG8QD3BP
# Both builds contain both prebuilds; better-sqlite3 selects process.arch.
x64ArchFiles: "Contents/Resources/app.asar.unpacked/node_modules/better-sqlite3/prebuilds/darwin-*.node"
darkModeSupport: true
target:
- dmg
category: public.app-category.news
electronLanguages:
- zh_CN
- zh_TW
- en
- fr
- es
- de
- tr
- ja
- sv
- uk
- it
- nl
- ko
- ru
- pt_BR
- pt_PT
- cs
- pl
minimumSystemVersion: 13.0.0
mas:
identity: "Haoyuan Liu (P2CG8QD3BP)"
artifactName: "${productName}-mac_store.pkg"
entitlements: build/entitlements.mas.plist
entitlementsInherit: build/entitlements.mas.inherit.plist
entitlementsLoginHelper: build/entitlements.mas.loginhelper.plist
# Preserve the entitlements used by the previous manual signing flow.
# Automatically added identity entitlements require a matching profile.
preAutoEntitlements: false
hardenedRuntime: false
gatekeeperAssess: false
File: electron-builder.yml
appId: me.hyliu.fluentreader
productName: Fluent Reader
copyright: Copyright ยฉ 2020 Haoyuan Liu
files:
- "./dist//*"
- "!./dist/fontlist"
- "!/.js.map"
directories:
output: "./bin/${platform}/${arch}/"
mac:
files:
- "./dist/**/"
- "!./dist/fontlist"
- "!**/.js.map"
- "!node_modules/better-sqlite3/prebuilds/linux.node"
- "!node_modules/better-sqlite3/prebuilds/win32-.node"
# Both builds contain both prebuilds; better-sqlite3 selects process.arch.
x64ArchFiles: "Contents/Resources/app.asar.unpacked/node_modules/better-sqlite3/prebuilds/darwin-.node"
minimumSystemVersion: 13.0.0
darkModeSupport: true
hardenedRuntime: true
gatekeeperAssess: false
entitlements: "./build/entitlements.mac.plist"
entitlementsInherit: "./build/entitlements.mac.plist"
notarize: true
target:
- dmg
category: public.app-category.news
electronLanguages:
- zh_CN
- zh_TW
- en
- fr
- es
- de
- tr
- ja
- sv
- uk
- it
- nl
- ko
- ru
- pt_BR
- pt_PT
- cs
- pl
win:
target:
- nsis
- zip
appx:
applicationId: FluentReader
identityName: 25286HaoyuanLiu.FluentReader
publisher: CN=FD70E7FA-E5AC-41C4-B9C4-6E8708A6616A
backgroundColor: transparent
languages:
- zh-CN
- zh-TW
- en-US
- fr-FR
- es
- de
- tr
- ja
- sv
- uk
- it
- nl
- ko
- ru
- pt-BR
- pt-PT
- cs
- pl
showNameOnTiles: true
setBuildNumber: true
nsis:
oneClick: false
perMachine: true
allowToChangeInstallationDirectory: true
deleteAppDataOnUninstall: true
linux:
target:
- AppImage
icon: build/icons
category: Utility
desktop:
entry:
StartupWMClass: fluent-reader
File: package.json
{
"name": "fluent-reader",
"version": "1.3.1",
"description": "Modern desktop RSS reader",
"main": "./dist/electron.js",
"scripts": {
"build": "webpack --config ./webpack.config.js",
"electron": "electron ./dist/electron.js",
"start": "npm run build && npm run electron",
"format": "prettier --write --list-different .",
"drizzle:generate": "drizzle-kit generate",
"update:mercury": "node build/update-mercury.js",
"postinstall": "install-electron && electron-builder install-app-deps",
"package-win": "electron-builder -w appx:x64 && electron-builder -w appx:arm64",
"package-win-ci": "electron-builder -w --x64 -p never",
"package-mac": "electron-builder --mac --universal",
"package-mas": "bash build/resignAndPackage.sh",
"package-linux": "electron-builder --linux --x64 -p never"
},
"keywords": [],
"author": "Haoyuan Liu",
"license": "BSD-3-Clause",
"sideEffects": [
"*.css"
],
"repository": "github:yang991178/fluent-reader",
"devDependencies": {
"@fluentui/react": "^7.126.2",
"@fluentui/react-components": "^9.73.7",
"@fluentui/react-migration-v8-v9": "^9.10.9",
"@fluentui/react-shared-contexts": "^9.26.2",
"@griffel/react": "^1.6.1",
"@griffel/webpack-plugin": "^4.0.3",
"@jocmp/mercury-parser": "^3.1.1",
"@types/lovefield": "^2.1.3",
"@types/nedb": "^1.8.9",
"@types/react": "^16.9.35",
"@types/react-dom": "^16.9.8",
"@types/react-redux": "^7.1.9",
"css-loader": "^7.1.4",
"drizzle-kit": "^0.31.0",
"drizzle-orm": "^0.45.2",
"electron": "^44.7.0",
"electron-builder": "^26.15.3",
"electron-react-devtools": "^0.5.3",
"electron-store": "^11.0.0",
"electron-window-state": "^5.0.3",
"font-list": "^1.4.2",
"html-webpack-plugin": "^5.5.3",
"js-md5": "^0.7.3",
"lovefield": "^2.1.12",
"mini-css-extract-plugin": "^2.10.2",
"node-polyfill-webpack-plugin": "^4.0.0",
"prettier": "2.3.2",
"qrcode.react": "^1.0.0",
"react": "^16.13.1",
"react-dom": "^16.13.1",
"react-intl-universal": "^2.2.5",
"react-redux": "^7.2.0",
"redux": "^4.0.5",
"redux-devtools": "^3.5.0",
"redux-thunk": "^2.3.0",
"reselect": "^4.0.0",
"rss-parser": "^3.13.0",
"ts-loader": "^9.5.7",
"typescript": "^6.0.2",
"webpack": "^5.105.4",
"webpack-cli": "^7.0.2"
},
"dependencies": {
"better-sqlite3": "^13.0.3"
}
}
File: tsconfig.json
{
"compilerOptions": {
"jsx": "react",
"resolveJsonModule": true,
"esModuleInterop": true,
"target": "ESNext",
"module": "ESNext",
"moduleResolution": "Bundler",
"strict": false
},
"exclude": ["node_modules", "tests"]
}
File: .prettierrc.yml
tabWidth: 4
semi: false
jsxBracketSameLine: true
arrowParens: "avoid"
quoteProps: "consistent"
File: src/scripts/i18n/README.md
Internationalization
Currently, Fluent Reader supports the following languages.
| Locale | Language | Credit |
|---|---|---|
| en-US | English | @yang991178 |
| cs | ฤeลกtina | @vikdevelop |
| es | Espaรฑol | @kant |
| fr-FR | Franรงais | @Toinane |
| fi-FI | Suomi | @SUPERHAMSTERI |
| zh-CN | ไธญๆ๏ผ็ฎไฝ๏ผ | @yang991178 |
| zh-TW | ไธญๆ๏ผ็น้ซ๏ผ | @jerryc127 |
| ja | ๆฅๆฌ่ช | @tiancheng2000 |
| de | Deutsch | @NoNamePro0 |
| sv | Svenska | @eson57 |
| tr | Tรผrkรงe | @mustafagenc |
| uk | Ukrainian | @thevllad |
| nl | Nederlands | @Vistaus |
| it | Italiano | @andrewasd |
| pt-BR | Portuguรชs do Brasil | @fabianski7 |
| pt-PT | Portuguรชs de Portugal | @0x1336 |
| ko | ํ๊ธ | @1drive |
| ru | Russian | @nxblnd |
| pl | Polish | @Zwatotem |
Refer to the repo of react-intl-universal to get started on internationalization.
File: src/scripts/i18n/cs.json
{
"allArticles": "Vลกechny ฤlรกnky",
"add": "Pลidat",
"create": "Vytvoลit",
"icon": "Ikona",
"name": "Nรกzev",
"openExternal": "Otevลรญt externฤ",
"emptyName": "Toto pole nesmรญ bรฝt prรกzdnรฉ.",
"emptyField": "Toto pole nesmรญ bรฝt prรกzdnรฉ.",
"edit": "Upravit",
"delete": "Odstranit",
"followSystem": "Podle systรฉmu",
"more": "Vรญce",
"close": "Zavลรญt",
"search": "Hledat",
"loadMore": "Naฤรญst vรญce",
"dangerButton": "Potvrdit {action}?",
"confirmMarkAll": "Opravdu chcete oznaฤit vลกechny ฤlรกnky na tรฉto strรกnce jako pลeฤtenรฉ?",
"confirm": "Potvrdit",
"cancel": "Zruลกit",
"default": "Vรฝchozรญ",
"time": {
"now": "nynรญ",
"m": "m",
"h": "h",
"d": "d",
"minute": "{m, plural, =1 {# minute} other {# minutes}}",
"hour": "{h, plural, =1 {# hour} other {# hours}}",
"day": "{d, plural, =1 {# day} other {# days}}"
},
"log": {
"empty": "ลฝรกdnรฉ notifikace",
"fetchFailure": "Nepodaลilo se naฤรญst zdroj "{name}".",
"fetchSuccess": "รspฤลกnฤ naฤten {count, plural, =1 {# article} other {# articles}}.",
"networkError": "Doลกlo k chybฤ sรญtฤ.",
"parseError": "Pลi analรฝze kanรกlu XML doลกlo k chybฤ.",
"syncFailure": "Doลกlo k chybฤ pลi synchronizaci se sluลพbou"
},
"nav": {
"menu": "Menu",
"refresh": "Naฤรญst znovu",
"markAllRead": "Oznaฤit vลกe jako pลeฤtenรฉ",
"notifications": "Notifikace",
"view": "Zobrazit",
"settings": "Nastavenรญ",
"minimize": "Maximalizovat",
"maximize": "Minimalizovat"
},
"menu": {
"close": "Zavลรญt menu",
"subscriptions": "Odbฤry"
},
"article": {
"error": "Nepodaลilo se naฤรญst ฤlรกnek.",
"reload": "Naฤรญst znovu?",
"empty": "ลฝรกdnรฉ ฤlรกnky",
"untitled": "(Bez titulku)",
"hide": "Skrรฝt ฤlรกnek",
"unhide": "Odkrรฝt ฤlรกnek",
"markRead": "Oznaฤit jako pลeฤtenรฉ",
"markUnread": "Oznaฤit jako nepลeฤtenรฉ",
"markAbove": "Oznaฤte vรฝลกe uvedenรฉ jako pลeฤtenรฉ",
"markBelow": "Oznaฤte nรญลพe uvedenรฉ jako pลeฤtenรฉ",
"star": "Ohvฤzdiฤkovat",
"unstar": "Odstranit hvฤzdu",
"fontSize": "Velikost pรญsma",
"loadWebpage": "Naฤรญst webovou strรกnku",
"loadFull": "Naฤรญst vลกechen obsah",
"notify": "Upozornit, pokud je naฤteno na pozadรญ",
"dontNotify": "Neupozorลovat",
"textDir": "Smฤr textu",
"LTR": "Zleva doprava",
"RTL": "Zprava doleva",
"Vertical": "Vertikรกlnฤ",
"font": "Pรญsmo"
},
"context": {
"share": "Sdรญlet",
"read": "ฤรญst",
"copyTitle": "Kopรญrovat titulek",
"copyURL": "Kopรญrovat odkaz",
"copy": "Kopรญrovat",
"search": "Hledat "{text}" on {engine}",
"view": "Zobrazit",
"cardView": "Karty",
"listView": "Seznam",
"magazineView": "ฤasopis",
"compactView": "Kompaktnรญ",
"filter": "Filtrovรกnรญ",
"unreadOnly": "Jen nepลeฤtenรฉ",
"starredOnly": "Jen ohvฤzdiฤkovanรฉ",
"fullSearch": "Vyhledat v plnรฉm textu",
"showHidden": "Zobrazit skrytรฉ ฤlรกnky",
"manageSources": "Spravovat zdroje",
"saveImageAs": "Uloลพit obrรกzek jako โฆ",
"copyImage": "Kopรญrovat obrรกzek",
"copyImageURL": "Kopรญrovat adresu obrรกzku",
"caseSensitive": "Rozliลกovat velkรก a malรก pรญsmena",
"showCover": "Zobrazit kryt",
"showSnippet": "Zobrazit รบryvek",
"fadeRead": " Vyblednout ฤtennรฉ ฤlรกnky"
},
"searchEngine": {
"name": "Vyhledรกvaฤ",
"google": "Google",
"bing": "Bing",
"baidu": "Baidu",
"duckduckgo": "DuckDuckGo"
},
"settings": {
"writeError": "Doลกlo k chybฤ pลi zapisovรกnรญ souboru.",
"name": "Nastavenรญ",
"fetching": "Probรญhรก aktualizace zdrojลฏ, prosรญm vyฤkejte โฆ",
"exit": "Opustit nastavenรญ",
"sources": "Zdroje",
"grouping": "Skupiny",
"rules": "Pravidla",
"service": "Sluลพba",
"app": "Pลedvolby",
"about": "O aplikaci",
"version": "Verze",
"shortcuts": "Zkratky",
"openSource": "Otevลenรฝ zdrojovรฝ kรณd",
"feedback": "Zpฤtnรก vazba"
},
"sources": {
"serviceWarning": "Zde importovanรฉ nebo pลidanรฉ zdroje nebudou synchronizovรกny s vaลกรญ sluลพbou.",
"serviceManaged": "Tento zdroj spravuje vaลกe sluลพba.",
"untitled": "Zdroj",
"errorAdd": "Doลกlo k chybฤ pลi pลidรกvรกnรญ zdroje.",
"errorParse": "Pลi analรฝze souboru OPML doลกlo k chybฤ.",
"errorParseHint": "Ujistฤte se, ลพe soubor nenรญ poลกkozenรฝ a je kรณdovรกn pomocรญ UTF-8.",
"errorImport": "Objevila se chyba pลi importovรกnรญ {count, plural, =1 {# source} other {# sources}}.",
"exist": "Tento zdroj jiลพ existuje.",
"opmlFile": "Soubor OPML",
"name": "Nรกzev zdroje",
"editName": "Upravit nรกzev",
"fetchFrequency": "Limit frekvence naฤรญtรกnรญ",
"unlimited": "Neomezenรฉ",
"openTarget": "Vรฝchozรญ otevลenรฝ cรญl pro ฤlรกnky",
"delete": "Odstranit zdroj",
"add": "Pลidat zdroj",
"import": "Importovat",
"export": "Exportovat",
"rssText": "Celรฝ text RSS",
"loadWebpage": "Naฤรญst webovou strรกnku",
"inputUrl": "Zadejte URL adresu",
"badIcon": "Nesprรกvnรก ikona",
"badUrl": "Nesprรกvnรก URL adresa",
"deleteWarning": "Zdroj a vลกechny uloลพenรฉ ฤlรกnky budou odstranฤny.",
"selected": "Vybranรฝ zdroj",
"selectedMulti": "Vybrat vรญce zdrojลฏ",
"hidden": "Ukryto v "all articles""
},
"groups": {
"exist": "Tato skupina jiลพ existuje",
"type": "Typ",
"group": "Skupina",
"source": "Zdroj",
"capacity": "Kapacita",
"exitGroup": "Zpฤt na skupiny",
"deleteSource": "Odstranit ze skupiny",
"sourceHint": "Pลetaลพenรญm zdrojลฏ zmฤnรญte jejich poลadรญ.",
"selectAllSources": "Vybrat vลกechny zdroje",
"create": "Vytvoลit skupinu",
"selectedGroup": "Vybranรก skupina",
"selectedSource": "Vybranรฝ zdroj",
"enterName": "Zadejte nรกzev",
"editName": "Editovat nรกzev",
"editGroup": "Upravit skupinu",
"deleteGroup": "Odstranit skupinu",
"chooseGroup": "Vybrat skupinu",
"addToGroup": "Pลidat do ...",
"groupHint": "Dvojklikem na skupinu upravรญte zdroje. Pลetaลพenรญm zmฤnรญte poลadรญ."
},
"rules": {
"intro": "Automatickรฉ oznaฤovรกnรญ ฤlรกnkลฏ nebo odesรญlรกnรญ oznรกmenรญ pomocรญ regulรกrnรญch vรฝrazลฏ.",
"help": "Zjistit vรญce",
"target": "Cรญl",
"selectTarget": "Vyberte cรญl",
"new": "Novรฉ pravidlo",
"title": "Titulek",
"content": "Obsah",
"fullSearch": "Titulek nebo obsah",
"creator": "Autor",
"match": "odpovรญdรก",
"notMatch": "neodpovรญdรก",
"regex": "Pravidelnรฝ vรฝraz",
"badRegex": "Nesprรกvnรฝ pravidelnรฝ vรฝraz.",
"action": "Akce",
"selectAction": "Vybrat akce",
"hint": "Pravidla se pouลพijรญ na novฤ naฤtenรฉ ฤlรกnky: vลกechny ฤlรกnky โ skupina โ zdroj. Provรกdฤjรญ se shora dolลฏ; pozdฤjลกรญ akce majรญ pลednost. Poลadรญ zmฤลte pลetaลพenรญm. Testy zahrnujรญ pravidla ลกirลกรญch cรญlลฏ.",
"test": "Testovacรญ pravidla",
"searchField": "Pole hledรกnรญ",
"matchCondition": "Podmรญnka shody",
"save": "Uloลพit pravidlo",
"selectAll": "Vybrat vลกechna pravidla",
"selectRule": "Vybrat pravidlo",
"saveError": "Pravidla se nepodaลilo uloลพit. Zkuste to znovu."
},
"service": {
"intro": "Synchronizace mezi zaลรญzenรญmi pomocรญ sluลพeb RSS.",
"select": "Vyberte sluลพbu",
"suggest": "Navrhnout novou sluลพbu",
"overwriteWarning": "Mรญstnรญ zdroje budou odstranฤny, pokud ve sluลพbฤ existujรญ.",
"groupsWarning": "Skupiny nejsou automaticky synchronizovรกny se sluลพbou.",
"rateLimitWarning": "Abyste se vyhnuli omezovรกnรญ rychlosti, musรญte si vytvoลit vlastnรญ klรญฤ API.",
"removeAd": "Odstranit reklamu",
"endpoint": "Koncovรฝ bod",
"username": "Uลพivatelskรฉ jmรฉno",
"password": "Heslo",
"unchanged": "Nezmฤnฤno",
"fetchLimit": "Limit synchronizace",
"fetchLimitNum": "{count} nejnovฤjลกรญch ฤlรกnkลฏ",
"importGroups": "Importovat skupiny",
"failure": "Nedaลรญ se pลipojit ke sluลพbฤ",
"failureHint": "Zkontrolujte konfiguraci sluลพby nebo stav sรญtฤ.",
"fetchUnlimited": "Neomezenรฝ (nedoporuฤuje se)",
"exportToLite": "Exportovat do Fluent reader Lite"
},
"app": {
"cleanup": "Vyฤistit",
"cache": "Vyฤistit mezipamฤลฅ",
"cacheSize": "Velikost {size} dat v mezipamฤti",
"deleteChoices": "Odstranit ฤlรกnky pลed ... dny",
"confirmDelete": "Odstranit",
"daysAgo": "{days, plural, =1 {# day} other {# days}} ago",
"deleteAll": "Odstranit vฤechny ฤlรกnky",
"calculatingSize": "Probรญhรก vรฝpoฤet velikosti...",
"itemSize": "Pลibliลพnฤ {size} mรญstnรญho รบloลพiลกtฤ zabรญrajรญ ฤlรกnky",
"confirmImport": "Opravdu chcete importovat data ze zรกloลพnรญho souboru? Vลกechna aktuรกlnรญ data budou vymazรกna.",
"data": "Data aplikace",
"backup": "Zรกloha",
"restore": "Obnovit",
"frData": "Data aplikace Fluent Reader",
"language": "Zobrazovanรฝ jazyk",
"theme": "Motiv",
"lightTheme": "Svฤtlรฝ motiv",
"darkTheme": "Tmavรฝ motiv",
"enableProxy": "Povolit Proxy",
"badUrl": "Nesprรกvnรก URL",
"pac": "PAC Adresa",
"setPac": "Nastavit PAC",
"pacHint": "U proxy serverลฏ Socks se doporuฤuje, aby PAC vracel "SOCKS5" pro DNS na stranฤ proxy serveru. Vypnutรญ proxy vyลพaduje restart.",
"fetchInterval": "Automatickรฝ interval naฤรญtรกnรญ",
"never": "Nikdy"
}
}
File: src/scripts/i18n/de.json
{
"allArticles": "Alle Artikel",
"add": "Hinzufรผgen",
"create": "Erstellen",
"icon": "Icon",
"name": "Name",
"openExternal": "Extern รถffnen",
"emptyName": "Dieses Feld darf nicht leer sein.",
"emptyField": "Dieses Feld darf nicht leer sein.",
"edit": "Bearbeiten",
"delete": "Entfernen",
"followSystem": "Systemstandard verwenden",
"more": "Mehr",
"close": "Schlieรen",
"search": "Suchen",
"loadMore": "Mehr laden",
"dangerButton": "Wirklich {action}?",
"confirmMarkAll": "Mรถchtest du wirklich alle Artikel als gelesen markieren?",
"confirm": "Bestรคtigen",
"cancel": "Abbrechen",
"time": {
"now": "gerade eben",
"m": "m",
"h": "h",
"d": "d",
"minute": "{m, plural, =1 {# minute} other {# minutes}}",
"hour": "{h, plural, =1 {# hour} other {# hours}}",
"day": "{d, plural, =1 {# day} other {# days}}"
},
"log": {
"empty": "Keine Benachrichtigungen",
"fetchFailure": "Fehler beim Laden von "{name}".",
"fetchSuccess": "Erfolgreich {count, plural, =1 {# Artikel} other {# Artikel}} geladen.",
"networkError": "Netzwerk-Fehler aufgetreten.",
"parseError": "Fehler beim Lesen des XML-Feeds.",
"syncFailure": "Fehler beim Synchronisieren."
},
"nav": {
"menu": "Menรผ",
"refresh": "Neu laden",
"markAllRead": "Alles als gelesen markieren",
"notifications": "Benachrichtigungen",
"view": "Ansicht",
"settings": "Einstellungen",
"minimize": "Minimieren",
"maximize": "Maximieren"
},
"menu": {
"close": "Menรผ schlieรen",
"subscriptions": "Abonnements"
},
"article": {
"error": "Fehler beim Laden des Artikels.",
"reload": "Neu laden?",
"empty": "Keine Artikel vorhanden",
"untitled": "(Unbenannt)",
"hide": "Artikel ausblenden",
"unhide": "Artikel wieder anzeigen",
"markRead": "Als gelesen markieren",
"markUnread": "Als ungelesen markieren",
"markAbove": "Darรผber als gelesen markieren",
"markBelow": "Darunter als gelesen markieren",
"star": "Favorisieren",
"unstar": "Favorit entfernen",
"fontSize": "Schriftgrรถรe",
"loadWebpage": "Internetseite laden",
"loadFull": "Kompletten Inhalt laden",
"notify": "Benachrichtigen, wenn im Hintergrund geladen",
"dontNotify": "Nicht benachrichtigen"
},
"context": {
"share": "Teilen",
"read": "Lesen",
"copyTitle": "Titel kopieren",
"copyURL": "Link kopieren",
"copy": "Kopieren",
"search": ""{text}" mit {engine} suchen",
"view": "Ansicht",
"cardView": "Karten",
"listView": "Liste",
"magazineView": "Magazin",
"compactView": "Kompakt",
"filter": "Filter",
"unreadOnly": "Nur ungelesene",
"starredOnly": "Nur Favoriten",
"fullSearch": "Suche im kompletten Text",
"showHidden": "Ausgeblendete Artikel anzeigen",
"manageSources": "Feeds verwalten",
"saveImageAs": "Bild speichern unter โฆ",
"copyImage": "Bild kopieren",
"copyImageURL": "Bild-Link kopieren",
"caseSensitive": "Groร-/Kleinschreibung beachten",
"showCover": "Cover anzeigen",
"showSnippet": "Ausschnitt anzeigen",
"fadeRead": "Gelesene Artikel ausblenden"
},
"searchEngine": {
"name": "Suchmaschine",
"google": "Google",
"bing": "Bing",
"baidu": "Baidu",
"duckduckgo": "DuckDuckGo"
},
"settings": {
"writeError": "Fehler beim Schreiben der Datei.",
"name": "Einstellungen",
"fetching": "Aktualisiere Feeds, bitte warten โฆ",
"exit": "Einstellungen schlieรen",
"sources": "Feeds",
"grouping": "Gruppen",
"rules": "Regeln",
"service": "Server",
"app": "Einstellungen",
"about": "Info",
"version": "Version",
"shortcuts": "Verknรผpfungen",
"openSource": "Open Source",
"feedback": "Feedback"
},
"sources": {
"serviceWarning": "Feeds, die hier importiert oder hinzugefรผgt werden, kรถnnen nicht mit dem Server synchronisiert werden.",
"serviceManaged": "Dieser Feed wird vom Server verwaltet.",
"untitled": "Feed",
"errorAdd": "Beim Hinzufรผgen des Feeds ist ein Fehler aufgetreten.",
"errorParse": "Beim Lesen der OPML-Datei ist ein Fehler aufgetreten.",
"errorParseHint": "Bitte รผberprรผfe, ob die Datei nicht beschรคdigt und mit UTF-8 formatiert ist.",
"errorImport": "Fehler beim Importieren von {count, plural, =1 {# Feed} other {# Feeds}}.",
"exist": "Dieser Feed existiert bereits.",
"opmlFile": "OPML-Datei",
"name": "Name des Feeds",
"editName": "Name bearbeiten",
"fetchFrequency": "Abrufhรคufigkeit begrenzen",
"unlimited": "Unbegrenzt",
"openTarget": "Standard-Ziel fรผr Artikel",
"delete": "Feed entfernen",
"add": "Feed hinzufรผgen",
"import": "Importieren",
"export": "Exportieren",
"rssText": "RSS-Volltext",
"loadWebpage": "Internetseite laden",
"inputUrl": "URL einfรผgen",
"badIcon": "Ungรผltiges Icon",
"badUrl": "Ungรผltige URL",
"deleteWarning": "Der Feed und alle gespeicherten Artikel werden entfernt.",
"selected": "Ausgewรคhlter Feed",
"selectedMulti": "Ausgewรคhlte Feeds"
},
"groups": {
"exist": "Diese Gruppe existiert bereits.",
"type": "Typ",
"group": "Gruppe",
"source": "Feed",
"capacity": "Grรถรe",
"exitGroup": "Zurรผck zu Gruppen",
"deleteSource": "Aus Gruppe entfernen",
"sourceHint": "Gruppen mit Drag & Drop sortieren.",
"selectAllSources": "Alle Quellen auswรคhlen",
"create": "Gruppe erstelllen",
"selectedGroup": "Ausgewรคhlte Gruppe",
"selectedSource": "Ausgewรคhlte Feeds",
"enterName": "Name eingeben",
"editName": "Name speichern",
"editGroup": "Gruppe bearbeiten",
"deleteGroup": "Gruppe lรถschen",
"chooseGroup": "Wรคhle ein Gruppe aus",
"addToGroup": "Zur Gruppe hinzufรผgen",
"groupHint": "Doppelklicke auf die Gruppe um die Feeds zu bearbeiten. Drag & Drop zum Sortieren."
},
"rules": {
"intro": "Artikel automatisch markieren oder Benachrichtigungen senden mit Hilfe regulรคrer Ausdrรผcke.",
"help": "Mehr erfahren",
"target": "Ziel",
"selectTarget": "Ziel auswรคhlen",
"new": "Neue Regel",
"title": "Titel",
"content": "Inhalt",
"fullSearch": "Titel oder Inhalt",
"creator": "Autor/-in",
"match": "enspricht",
"notMatch": "entspricht nicht",
"regex": "regulรคrer Ausdruck",
"badRegex": "Ungรผltiger regulรคrer Ausdruck.",
"action": "Aktionen",
"selectAction": "Aktionen wรคhlen",
"hint": "Regeln gelten fรผr neu abgerufene Artikel: alle Artikel โ Gruppe โ Quelle. Sie werden von oben nach unten ausgefรผhrt; spรคtere Aktionen haben Vorrang. Zum Sortieren ziehen und ablegen. Tests berรผcksichtigen Regeln รผbergeordneter Ziele.",
"test": "Regeln testen",
"searchField": "Suchfeld",
"matchCondition": "รbereinstimmungsbedingung",
"save": "Regel speichern",
"selectAll": "Alle Regeln auswรคhlen",
"selectRule": "Regel auswรคhlen",
"saveError": "Regeln konnten nicht gespeichert werden. Bitte erneut versuchen."
},
"service": {
"intro": "Mit RSS-Server รผber mehrere Gerรคte hinweg synchronisieren.",
"select": "Wรคhle ein Anbieter aus",
"suggest": "Schlage einen anderen Anbieter vor",
"overwriteWarning": "Lokale Feeds werden gelรถscht, wenn sie auf dem Server schon existieren.",
"groupsWarning": "Gruppen werden nicht automatisch mit dem Server synchronisiert.",
"rateLimitWarning": "Um Abruf-Begrenzungen zu vermeiden, musst du einen eigenen API-Schlรผssel erstellen.",
"removeAd": "Werbung entfernen",
"endpoint": "Endpoint",
"username": "Nutzername",
"password": "Passwort",
"unchanged": "Unverรคndert",
"fetchLimit": "Synchronisations-Limit",
"fetchLimitNum": "{count} Artikel",
"importGroups": "Gruppen importieren",
"failure": "Fehler beim Verbinden zum Server",
"failureHint": "Bitte รผberprรผfe die Server-Konfiguration oder deinen Netzwerk-Status.",
"fetchUnlimited": "Unbegrenzt (nicht empfohlen)",
"exportToLite": "Fรผr Fluent Reader Lite exportieren"
},
"app": {
"cleanup": "Aufrรคumen",
"cache": "Cache leeren",
"cacheSize": "{size} Daten gecacht",
"deleteChoices": "Entferne Artikel รคlter als ... Tage",
"confirmDelete": "Lรถschen",
"daysAgo": "{days} Tage",
"deleteAll": "Alle Artikel entfernen",
"calculatingSize": "Berechne Grรถรe...",
"itemSize": "Ungefรคhr {size} lokaler Speicher wird fรผr Artikel genutzt.",
"confirmImport": "Mรถchtest du deine Daten wirklich neu importieren? Deine aktuellen Daten werden gelรถscht.",
"data": "App-Daten",
"backup": "Sichern",
"restore": "Wiederherstellen",
"frData": "Fluent Reader - Daten",
"language": "Anzeigesprache",
"theme": "Darstellung",
"lightTheme": "Hell",
"darkTheme": "Dunkel",
"enableProxy": "Proxy aktivieren",
"badUrl": "Ungรผltige URL",
"pac": "PAC-Adresse",
"setPac": "PAC-Adresse festlegen",
"pacHint": "Fรผr SOCKS-Proxies wird empfohlen, fรผr proxy-seitiges DNS im PAC "SOCKS5" zurรผckzugeben. Das Deaktivieren des Proxies erfordert einen Neustart.",
"fetchInterval": "Automatisches Abrufintervall",
"never": "Nie"
}
}
File: src/scripts/i18n/en-US.json
{
"allArticles": "All articles",
"add": "Add",
"create": "Create",
"icon": "Icon",
"name": "Name",
"openExternal": "Open externally",
"emptyName": "This field cannot be empty.",
"emptyField": "This field cannot be empty.",
"edit": "Edit",
"delete": "Delete",
"followSystem": "Follow system",
"more": "More",
"close": "Close",
"search": "Search",
"loadMore": "Load more",
"dangerButton": "Confirm {action}?",
"confirmMarkAll": "Do you really want to mark all articles on this page as read?",
"confirm": "Confirm",
"cancel": "Cancel",
"default": "Default",
"time": {
"now": "now",
"m": "m",
"h": "h",
"d": "d",
"minute": "{m, plural, =1 {# minute} other {# minutes}}",
"hour": "{h, plural, =1 {# hour} other {# hours}}",
"day": "{d, plural, =1 {# day} other {# days}}"
},
"log": {
"empty": "No notifications",
"fetchFailure": "Failed to load source "{name}".",
"fetchSuccess": "Successfully fetched {count, plural, =1 {# article} other {# articles}}.",
"networkError": "A network error has occurred.",
"parseError": "An error has occurred when parsing the XML feed.",
"syncFailure": "Failed to sync with service"
},
"nav": {
"menu": "Menu",
"refresh": "Refresh",
"markAllRead": "Mark all as read",
"notifications": "Notifications",
"view": "View",
"settings": "Settings",
"minimize": "Minimize",
"maximize": "Maximize"
},
"menu": {
"close": "Close menu",
"subscriptions": "Subscriptions"
},
"article": {
"error": "Failed to load article.",
"reload": "Reload?",
"empty": "No articles",
"untitled": "(Untitled)",
"hide": "Hide article",
"unhide": "Unhide article",
"markRead": "Mark as read",
"markUnread": "Mark as unread",
"markAbove": "Mark above as read",
"markBelow": "Mark below as read",
"star": "Star",
"unstar": "Remove star",
"fontSize": "Font size",
"loadWebpage": "Load webpage",
"loadFull": "Load full content",
"notify": "Notify if fetched in background",
"dontNotify": "Don't notify",
"textDir": "Text direction",
"LTR": "Left-to-right",
"RTL": "Right-to-left",
"Vertical": "Vertical",
"font": "Font"
},
"context": {
"share": "Share",
"read": "Read",
"copyTitle": "Copy title",
"copyURL": "Copy link",
"copy": "Copy",
"search": "Search "{text}" on {engine}",
"view": "View",
"cardView": "Card view",
"listView": "List view",
"magazineView": "Magazine view",
"compactView": "Compact view",
"filter": "Filtering",
"unreadOnly": "Unread only",
"starredOnly": "Starred only",
"fullSearch": "Search in full text",
"showHidden": "Show hidden articles",
"manageSources": "Manage sources",
"saveImageAs": "Save image as โฆ",
"copyImage": "Copy image",
"copyImageURL": "Copy image link",
"caseSensitive": "Case sensitive",
"showCover": "Show cover",
"showSnippet": "Show snippet",
"fadeRead": "Fade read articles"
},
"searchEngine": {
"name": "Search engine",
"google": "Google",
"bing": "Bing",
"baidu": "Baidu",
"duckduckgo": "DuckDuckGo"
},
"settings": {
"writeError": "An error has occurred while writing the file.",
"name": "Settings",
"fetching": "Updating sources, please wait โฆ",
"exit": "Exit settings",
"sources": "Sources",
"grouping": "Groups",
"rules": "Rules",
"service": "Service",
"app": "Preferences",
"about": "About",
"version": "Version",
"shortcuts": "Shortcuts",
"openSource": "Open source",
"feedback": "Feedback"
},
"sources": {
"serviceWarning": "Sources imported or added here will not be synced with your service.",
"serviceManaged": "This source is managed by your service.",
"untitled": "Source",
"errorAdd": "An error has occured when adding the source.",
"errorParse": "An error has occurred when parsing the OPML file.",
"errorParseHint": "Please ensure that the file isn't corrupted and is encoded with UTF-8.",
"errorImport": "Error importing {count, plural, =1 {# source} other {# sources}}.",
"exist": "This source already exists.",
"opmlFile": "OPML File",
"name": "Source name",
"editName": "Edit name",
"fetchFrequency": "Fetch frequency limit",
"unlimited": "Unlimited",
"openTarget": "Default open target for articles",
"delete": "Delete source",
"add": "Add source",
"import": "Import",
"export": "Export",
"rssText": "RSS full text",
"loadWebpage": "Load webpage",
"inputUrl": "Enter URL",
"badIcon": "Invalid icon",
"badUrl": "Invalid URL",
"deleteWarning": "The source and all saved articles will be removed.",
"selected": "Selected source",
"selectedMulti": "Selected multiple sources",
"hidden": "Hide in "all articles""
},
"groups": {
"exist": "This group already exists.",
"type": "Type",
"group": "Group",
"source": "Source",
"capacity": "Capacity",
"exitGroup": "Back to groups",
"deleteSource": "Delete from group",
"sourceHint": "Drag and drop sources to reorder.",
"selectAllSources": "Select all sources",
"create": "Create group",
"selectedGroup": "Selected group",
"selectedSource": "Selected source",
"enterName": "Enter name",
"editName": "Edit name",
"editGroup": "Edit group",
"deleteGroup": "Delete group",
"chooseGroup": "Select a group",
"addToGroup": "Add to ...",
"groupHint": "Double click on group to edit sources. Drag and drop to reorder."
},
"rules": {
"intro": "Automatically mark articles or send notifications with regular expressions.",
"help": "Learn more",
"target": "Target",
"selectTarget": "Select a target",
"new": "New rule",
"title": "Title",
"content": "Content",
"fullSearch": "Title or content",
"creator": "Author",
"match": "matches",
"notMatch": "doesn't match",
"regex": "Regular expression",
"badRegex": "Invalid regular expression.",
"action": "Actions",
"selectAction": "Select actions",
"hint": "Rules apply to newly fetched articles: all articles โ group โ source. Rules run from top to bottom; later actions take precedence. Drag and drop to reorder. Tests include rules from broader targets.",
"test": "Test rules",
"searchField": "Search field",
"matchCondition": "Match condition",
"save": "Save rule",
"selectAll": "Select all rules",
"selectRule": "Select rule",
"saveError": "Could not save rules. Please try again."
},
"service": {
"intro": "Sync across devices with RSS services.",
"select": "Select a service",
"suggest": "Suggest a new service",
"overwriteWarning": "Local sources will be deleted if they exist in the service.",
"groupsWarning": "Groups aren't automatically synced with the service.",
"rateLimitWarning": "To avoid rate limiting, you need to create your own API Key.",
"removeAd": "Remove Ad",
"endpoint": "Endpoint",
"username": "Username",
"password": "Password",
"unchanged": "Unchanged",
"fetchLimit": "Sync limit",
"fetchLimitNum": "{count} latest articles",
"importGroups": "Import groups",
"failure": "Cannot connect to service",
"failureHint": "Please check the service configuration or network status.",
"fetchUnlimited": "Unlimited (not recommended)",
"exportToLite": "Export to Fluent Reader Lite"
},
"app": {
"cleanup": "Clean up",
"cache": "Clear cache",
"cacheSize": "Cached {size} of data",
"deleteChoices": "Delete articles from ... days ago",
"confirmDelete": "Delete",
"daysAgo": "{days, plural, =1 {# day} other {# days}} ago",
"deleteAll": "Delete all articles",
"calculatingSize": "Calculating size...",
"itemSize": "Around {size} of local storage is occupied by articles",
"confirmImport": "Do you really want to import data from the backup file? All current data will be wiped.",
"data": "Application Data",
"backup": "Backup",
"restore": "Restore",
"frData": "Fluent Reader Data",
"language": "Display language",
"theme": "Theme",
"lightTheme": "Light mode",
"darkTheme": "Dark mode",
"enableProxy": "Enable Proxy",
"badUrl": "Invalid URL",
"pac": "PAC Address",
"setPac": "Set PAC",
"pacHint": "For Socks proxies, it is recommended for PAC to return "SOCKS5" for proxy-side DNS. Turning off proxy requires restart.",
"fetchInterval": "Automatic fetch interval",
"never": "Never"
}
}
File: src/scripts/i18n/es.json
{
"allArticles": "Todos los artรญculos",
"add": "Agregar",
"create": "Crear",
"icon": "Icono",
"name": "Nombre",
"openExternal": "Abrir de modo externo",
"emptyName": "Este campo no puede estar vacรญo.",
"emptyField": "Este campo no puede estar vacรญo.",
"edit": "Modificar",
"delete": "Eliminar",
"followSystem": "Seguir sistema",
"more": "Mรกs",
"close": "Cerrar",
"search": "Buscar",
"loadMore": "Cargar mรกs",
"dangerButton": "Confirmar {action}?",
"confirmMarkAll": "ยฟDesea realmente marcar todos los artรญculos en esta pรกgina como leรญdos?",
"confirm": "Confirmar",
"cancel": "Cancelar",
"time": {
"now": "ahora",
"m": "m",
"h": "h",
"d": "d",
"minute": "{m, plural, =1 {# minuto} other {# minutos}}",
"hour": "{h, plural, =1 {# hora} other {# horas}}",
"day": "{d, plural, =1 {# dรญa} other {# dรญas}}"
},
"log": {
"empty": "Sin notificaciones",
"fetchFailure": "Fallรณ al cargar fuente "{name}".",
"fetchSuccess": "Recuperado exitosamente {count, plural, =1 {# artรญculo} other {# artรญculos}}."
},
"nav": {
"menu": "Menรบ",
"refresh": "Actualizar",
"markAllRead": "Marcar todo como leรญdo",
"notifications": "Notificaciones",
"view": "Ver",
"settings": "Configuraciones",
"minimize": "Minimizar",
"maximize": "Maximizar"
},
"menu": {
"close": "Cerrar menรบ",
"subscriptions": "Suscripciones"
},
"article": {
"empty": "Sin artรญculos",
"untitled": "(sin tรญtulo)",
"hide": "Ocultar artรญculo",
"unhide": "Mostar artรญculo",
"markRead": "Marcar como leรญdo",
"markUnread": "Marcar como no leรญdo",
"star": "Destacar",
"unstar": "Quitar destacado",
"fontSize": "Tamaรฑo de la fuente",
"loadWebpage": "Cargar pรกgina web"
},
"context": {
"share": "Compartir",
"read": "Leer",
"copyTitle": "Copiar tรญtulo",
"copyURL": "Copiar enlace",
"copy": "Copiar",
"search": "Buscar "{text}" en {engine}",
"view": "Ver",
"cardView": "Vista en modo tarjeta",
"listView": "Vista en modo listado",
"magazineView": "Vista en modo revista",
"compactView": "Vista en modo compacta",
"filter": "Filtrando",
"unreadOnly": "Solo no leรญdos",
"starredOnly": "Solo destacados",
"fullSearch": "Buscar en todo el texto",
"showHidden": "Mostrar artรญculos ocultos",
"manageSources": "Gestionar fuentes"
},
"settings": {
"writeError": "Se produjo un error al escribir el archivo.",
"name": "Configuraciones",
"fetching": "Actualizando fuentes, por favor espere โฆ",
"exit": "Salir de Configuraciones",
"sources": "Fuentes",
"grouping": "Agrupamiento",
"rules": "Reglas",
"app": "Preferencias",
"about": "Acerca",
"version": "Versiรณn",
"shortcuts": "Atajos",
"openSource": "Abrir fuente",
"feedback": "Reacciones"
},
"sources": {
"untitled": "Fuente",
"errorAdd": "Se ha producido un error al agregar la fuente.",
"errorParse": "Se produjo un error al analizar el archivo OPML.",
"errorParseHint": "Por favor asegรบrese que el archivo no estรก corrupto y codificado en formato UTF-8.",
"errorImport": "Error en la importaciรณn {count, plural, =1 {# fuente} other {# fuentes}}.",
"opmlFile": "Archivo OPML",
"name": "Nombre de la fuente",
"editName": "Modificar nombre",
"fetchFrequency": "Lรญmite en la frecuencia de recolecciรณn de las fuentes",
"unlimited": "Ilimitado",
"openTarget": "Lugar predeterminado de apertura de los artรญculos",
"delete": "Eliminar fuente",
"add": "Agregar fuente",
"import": "Importar",
"export": "Exportar",
"rssText": "RSS texto completo",
"loadWebpage": "Cargar pรกgina web",
"inputUrl": "Ingresar direcciรณn URL",
"badUrl": "URL no vรกlida",
"deleteWarning": "Se eliminarรกn la fuente y todos los artรญculos guardados..",
"selected": "Fuente seleccionada",
"selectedMulti": "Mรบltiples fuentes seleccionadas"
},
"groups": {
"type": "Tipo",
"group": "Grupo",
"source": "Fuente",
"capacity": "Capacidad",
"exitGroup": "Volver a los grupos",
"deleteSource": "Eliminar del grupo",
"sourceHint": "Arrastrar y soltar fuentes para reordenar.",
"selectAllSources": "Seleccionar todas las fuentes",
"create": "Crear grupo",
"selectedGroup": "Grupo seleccionado",
"selectedSource": "Fuente seleccionada",
"enterName": "Ingresar nombre",
"editName": "Modificar nombre",
"editGroup": "Editar grupo",
"deleteGroup": "Eliminar grupo",
"chooseGroup": "Seleccionar un grupo",
"addToGroup": "Agregar a ...",
"groupHint": "Doble clic sobre un grupo para modificar las fuentes. Arrastrar y soltar para reordenar."
},
"rules": {
"target": "Destino",
"selectTarget": "Seleccionar un destino",
"new": "Nueva regla",
"title": "Tรญtulo",
"content": "Contenido",
"fullSearch": "Tรญtulo o contenido",
"match": "coincidencias",
"notMatch": "no coincide",
"regex": "Expresiรณn regular",
"badRegex": "Expresiรณn regular no vรกlida.",
"action": "Acciones",
"selectAction": "Seleccionar acciones",
"hint": "Las reglas se aplican a artรญculos reciรฉn obtenidos: todos los artรญculos โ grupo โ fuente. Se ejecutan de arriba abajo; las acciones posteriores tienen prioridad. Arrastra para cambiar el orden. Las pruebas incluyen reglas de destinos mรกs amplios.",
"test": "Probar reglas",
"searchField": "Campo de bรบsqueda",
"matchCondition": "Condiciรณn de coincidencia",
"save": "Guardar regla",
"selectAll": "Seleccionar todas las reglas",
"selectRule": "Seleccionar regla",
"saveError": "No se pudieron guardar las reglas. Intรฉntalo de nuevo."
},
"app": {
"cleanup": "Limpiar",
"cache": "Limpiar cachรฉ",
"cacheSize": "{size} cachรฉ de datos",
"deleteChoices": "Eliminar artรญculos de hace ... dรญas atrรกs",
"confirmDelete": "Eliminar",
"daysAgo": "hace {days} atrรกs",
"deleteAll": "Eliminar todos los artรญculos",
"calculatingSize": "Calculando tamaรฑo...",
"itemSize": "Alrededor de {size} del almacenamiento local estรก ocupado por artรญculos",
"confirmImport": "ยฟRealmente desea importar datos desde el archivo de resguardo? Todos los actuales datos serรกn eliminados.",
"data": "Datos de la aplicaciรณn",
"backup": "Resguardo",
"restore": "Restaurar",
"frData": "Lector de datos",
"language": "Mostrar idioma",
"theme": "Tema",
"lightTheme": "Modo claro",
"darkTheme": "Modo oscuro",
"enableProxy": "Habilitar proxy",
"badUrl": "URL no vรกlida",
"pac": "Direcciรณn PAC",
"setPac": "Establecer PAC",
"pacHint": "Para proxies de tipo Socks proxies, se recomienda que PAC devuelva "SOCKS5" respecto del DNS del proxy. Desactivar el proxy requiere reiniciar."
}
}
File: src/scripts/i18n/fi-FI.json
{
"add": "Lisรครค",
"allArticles": "Kaikki artikkelit",
"app": {
"backup": "Varmuuskopiointi",
"badUrl": "Virheellinen URL",
"cache": "Tyhjennรค vรคlimuisti",
"cacheSize": "Vรคlimuistissa on {size} dataa",
"calculatingSize": "Lasketaan kokoa...",
"cleanup": "Siivoa",
"confirmDelete": "Poista",
"confirmImport": "Haluatko tuoda tiedot varmuuskopiosta? Kaikki nykyinen data poistetaan.",
"darkTheme": "Tumma tila",
"data": "Sovelluksen Data",
"daysAgo": "{days, plural, =1 {# pรคivรค} other {# pรคivรครค}} sitten",
"deleteAll": "Poista kaikki artikkelit",
"deleteChoices": "Poista ... pรคivรครค vanhemmat artikkelit",
"enableProxy": "Kรคytรค vรคlityspalvelinta",
"fetchInterval": "Automaattinen pรคivitys",
"frData": "Fluent Reader Data",
"itemSize": "Artikkelit kรคyttรคvรคt {size} paikallista tallennustilaa",
"language": "Nรคyttรถkieli",
"lightTheme": "Vaalea tila",
"never": "Ei koskaan",
"pac": "PAC Osoite",
"pacHint": "Socks -vรคlityspalvelimille on suositeltavaa asettaa PAC palauttamaan "SOCKS5" vรคlityspalvelminen DNS:tรค. Vรคlityspalvelimen laittaminen pois pรครคltรค vaatii uudelleenkรคynnistyksen,",
"restore": "Palauta",
"setPac": "Aseta PAC",
"theme": "Teema"
},
"article": {
"dontNotify": "รlรค ilmoita",
"empty": "Ei artikkeleita",
"error": "Artikkelin lataaminen epรคonnistui.",
"fontSize": "Fonttikoko",
"hide": "Piilota artikkeli",
"loadFull": "Lataa koko sisรคltรถ",
"loadWebpage": "Lataa verkkosivu",
"markAbove": "Merkitse ylemmรคt luetuksi",
"markBelow": "Merkitse alemmat luetuksi",
"markRead": "Merkitse luetuksi",
"markUnread": "Merkitse lukemattomaksi",
"notify": "Ilmoita, jos haetaan taustalla",
"reload": "Ladataanko uudelleen?",
"star": "Tรคhti",
"unhide": "Nรคytรค artikkeli",
"unstar": "Poista tรคhti",
"untitled": "(Nimetรถn)"
},
"cancel": "Peruuta",
"close": "Sulje",
"confirm": "Vahvista",
"confirmMarkAll": "Haluatko todella merkitรค kaikki tรคmรคn sivun artikkelit luetuiksi?",
"context": {
"cardView": "Kortit",
"caseSensitive": "Vain sama merkkikoko",
"compactView": "Kompakti",
"copy": "Kopioi",
"copyImage": "Kopioi kuva",
"copyImageURL": "Kopioi kuvalinkki",
"copyTitle": "Kopioi otsikko",
"copyURL": "Kopioi linkki",
"fadeRead": "Hรคivytรค luetut artikkelit",
"filter": "Suodatus",
"fullSearch": "Hae koko tekstistรค",
"listView": "Lista",
"magazineView": "Lehti",
"manageSources": "Hallitse lรคhteitรค",
"read": "Luettu",
"saveImageAs": "Tallenna kuva nimellรคโฆ",
"search": "Hae "{text}" {engine}lla",
"share": "Jaa",
"showCover": "Nรคytรค artikkelin kuva",
"showHidden": "Nรคytรค piilotetut artikkelit",
"showSnippet": "Nรคytรค katkelma",
"starredOnly": "Vain tรคhdellรค merkityt",
"unreadOnly": "Vain lukemattomat",
"view": "Nรคkymรค"
},
"create": "Luo",
"dangerButton": "Vahvistetaanko {action}?",
"delete": "Poista",
"edit": "Muokkaa",
"emptyField": "Tรคmรค kenttรค ei voi olla tyhjรค.",
"emptyName": "Tรคmรค kenttรค ei voi olla tyhjรค.",
"followSystem": "Kรคytรค jรคrjestelmรคn teemaa",
"groups": {
"addToGroup": "Lisรครค ...",
"capacity": "Mรครคrรค",
"chooseGroup": "Valitse ryhmรค",
"create": "Luo ryhmรค",
"deleteGroup": "Poista ryhmรค",
"deleteSource": "Poista ryhmรคstรค",
"editName": "Muokkaa nimeรค",
"editGroup": "Muokkaa ryhmรครค",
"enterName": "Anna nimi",
"exist": "Tรคmรค ryhmรค on jo olemassa.",
"exitGroup": "Takaisin ryhmiin",
"group": "Ryhmรค",
"groupHint": "Kaksoisnapsauta ryhmรครค muokataksesi sen lรคhteitรค. Jรคrjestรค uudelleen vetรคmรคllรค ja pudottamalla.",
"selectedGroup": "Valittu ryhmรค",
"selectedSource": "Valittu lรคhde",
"source": "Lรคhde",
"sourceHint": "Jรคrjestรค uudelleen vetรคmรคllรค ja pudottamalla lรคhteitรค.",
"selectAllSources": "Valitse kaikki lรคhteet",
"type": "Tyyppi"
},
"icon": "Kuvake",
"loadMore": "Lataa lisรครค",
"log": {
"empty": "Ei ilmoituksia",
"fetchFailure": "Lรคhteen "{name}" lataaminen epรคonnistui.",
"fetchSuccess": "Noudettiin onnistuneesti {count, plural, =1 {# artikkeli} other {# artikkelia}}.",
"networkError": "Tapahtui verkkovirhe.",
"parseError": "XML-syรถtteen jรคsentรคmisessรค tapahtui virhe.",
"syncFailure": "Palvelun kanssa synkronointi epรคonnistui"
},
"menu": {
"close": "Sulje valikko",
"subscriptions": "Tilaukset"
},
"more": "Lisรครค",
"name": "Nimi",
"nav": {
"markAllRead": "Merkitse kaikki luetuksi",
"maximize": "Laajenna",
"menu": "Valikko",
"minimize": "Pienennรค",
"notifications": "Ilmoitukset",
"refresh": "Pรคivitรค",
"settings": "Asetukset",
"view": "Nรคkymรค"
},
"openExternal": "Avaa selaimessa",
"rules": {
"action": "Toiminto",
"badRegex": "Virheellinen sรครคntรถ.",
"content": "Sisรคltรถ",
"creator": "Kirjoittaja",
"fullSearch": "Otsikko tai sisรคltรถ",
"help": "Lisรคtietoja",
"hint": "Sรครคntรถjรค sovelletaan uusiin haettuihin artikkeleihin: kaikki artikkelit โ ryhmรค โ lรคhde. Sรครคnnรถt suoritetaan ylhรครคltรค alas; myรถhemmรคt toiminnot ovat etusijalla. Muuta jรคrjestystรค vetรคmรคllรค. Testit sisรคltรคvรคt laajempien kohteiden sรครคnnรถt.",
"intro": "Merkitse artikkelit automaattisesti tai lรคhetรค ilmoituksia sรครคnnรถllisin lausekkein.",
"match": "tรคsmรครค",
"new": "Uusi sรครคntรถ",
"notMatch": "ei tรคsmรครค",
"regex": "Sรครคnnรถllinen lauseke",
"selectAction": "Valitse toiminnot",
"selectTarget": "Valitse kohde",
"target": "Kohde",
"test": "Testaa sรครคntรถรค",
"title": "Otsikko",
"searchField": "Hakukenttรค",
"matchCondition": "Vastaavuusehto",
"save": "Tallenna sรครคntรถ",
"selectAll": "Valitse kaikki sรครคnnรถt",
"selectRule": "Valitse sรครคntรถ",
"saveError": "Sรครคntรถjรค ei voitu tallentaa. Yritรค uudelleen."
},
"search": "Hae",
"searchEngine": {
"baidu": "Baidu",
"bing": "Bing",
"duckduckgo": "DuckDuckGo",
"google": "Google",
"name": "Hakukone"
},
"service": {
"endpoint": "Osoite",
"exportToLite": "Vie Fluent Reader Lite -ohjelmaan",
"failure": "Palveluun ei voi muodostaa yhteyttรค",
"failureHint": "Tarkista palvelun asetukset tai verkkoyhteytesi.",
"fetchLimit": "Synkronointiraja",
"fetchLimitNum": "{count} viimeisintรค artikkelia",
"fetchUnlimited": "Rajoittamaton (ei suositella)",
"groupsWarning": "Ryhmiรค ei synkronoida automaattisesti palvelun kanssa.",
"importGroups": "Tuo ryhmรคt",
"intro": "Synkronoi laitteiden vรคlillรค RSS-palveluiden kanssa.",
"overwriteWarning": "Paikalliset lรคhteet poistetaan, jos niitรค on palvelussa.",
"password": "Salasana",
"rateLimitWarning": "Rajapintakรคytรถn rajoituksien vรคlttรคmiseksi sinun on luotava oma API-avain.",
"removeAd": "Poista mainos",
"select": "Valitse palvelu",
"suggest": "Ehdota uutta palvelua",
"unchanged": "Ei muutoksia",
"username": "Kรคyttรคjรคtunnus"
},
"settings": {
"about": "Tietoja",
"app": "Asetukset",
"exit": "Poistu asetuksista",
"feedback": "Palaute",
"fetching": "Pรคivitetรครคn lรคhteitรค, odotaโฆ",
"grouping": "Ryhmรคt",
"name": "Asetukset",
"openSource": "Avoin lรคhdekoodi",
"rules": "Sรครคnnรถt",
"service": "Palvelu",
"shortcuts": "Pikakomennot",
"sources": "Lรคhteet",
"version": "Versio",
"writeError": "Tiedostoa kirjoitettaessa tapahtui virhe."
},
"sources": {
"add": "Lisรครค lรคhde",
"badIcon": "Virheellinen kuvake",
"badUrl": "Virheellinen URL",
"delete": "Poista lรคhde",
"deleteWarning": "Lรคhde ja kaikki tallennetut artikkelit poistetaan.",
"editName": "Muokkaa nimeรค",
"errorAdd": "Lรคhdettรค lisรคttรคessรค tapahtui virhe.",
"errorImport": "Virhe tuotaessa {count, plural, =1 {# lรคhdettรค} other {# lรคhteitรค}}.",
"errorParse": "OPML -tiedoston jรคsentรคmisessรค tapahtui virhe.",
"errorParseHint": "Varmista, ettรค tiedosto ei ole vioittunut ja ettรค se on koodattu UTF-8: lla.",
"exist": "Tรคmรค lรคhde on jo olemassa.",
"export": "Vie",
"fetchFrequency": "Tietojen hakemisen raja",
"import": "Tuo",
"inputUrl": "Syรถtรค URL",
"loadWebpage": "Lataa verkkosivu",
"name": "Lรคhteen nimi",
"openTarget": "Avaa artikkelit oletuksena",
"opmlFile": "OPML -tiedosto",
"rssText": "RSS koko teksti",
"selected": "Valittu lรคhde",
"selectedMulti": "Valittu useita lรคhteitรค",
"serviceManaged": "Palvelu hallinnoi tรคtรค lรคhdettรค.",
"serviceWarning": "Tรครคltรค tuotuja tai lisรคttyjรค lรคhteitรค ei synkronoida palvelusi kanssa.",
"unlimited": "Rajoittamaton",
"untitled": "Lรคhde"
},
"time": {
"d": "pv",
"day": "{d, plural, =1 {# pรคivรค} other {# pรคivรครค}}",
"h": "h",
"hour": "{h, plural, =1 {# tunti} other {# tuntia}}",
"m": "min",
"minute": "{m, plural, =1 {# minutti} other {# minuttia}}",
"now": "nyt"
}
}
File: src/scripts/i18n/fr-FR.json
{
"allArticles": "Tous les articles",
"add": "Ajouter",
"create": "Crรฉer",
"icon": "Icรดne",
"name": "Nom",
"openExternal": "Ouvrir dans le navigateur",
"emptyName": "Ce champ ne peut pas รชtre vide.",
"emptyField": "Ce champ ne peut pas รชtre vide.",
"edit": "Modifier",
"delete": "Supprimer",
"followSystem": "Suivre le systรจme",
"more": "Plus",
"close": "Fermer",
"search": "Rechercher",
"loadMore": "Charger plus",
"dangerButton": "Confirmer {action} ?",
"confirmMarkAll": "Voulez-vous vraiment marquer tous les articles de cette page comme lus ?",
"confirm": "Confirmer",
"cancel": "Annuler",
"time": {
"now": "maintenant",
"m": "m",
"h": "h",
"d": "j",
"minute": "{m, plural, =1 {# minute} other {# minutes}}",
"hour": "{h, plural, =1 {# heure} other {# heures}}",
"day": "{d, plural, =1 {# jour} other {# jours}}"
},
"log": {
"empty": "Aucune notification",
"fetchFailure": "รchec du chargement de la source "{name}".",
"fetchSuccess": "Rรฉcupรฉration rรฉussi de {count, plural, =1 {# article} other {# articles}}.",
"networkError": "Une erreur de rรฉseau s'est produite.",
"parseError": "Une erreur s'est produite lors de l'analyse du flux XML.",
"syncFailure": "รchec de synchronisation avec le service"
},
"nav": {
"menu": "Menu",
"refresh": "Actualiser",
"markAllRead": "Marquer tout comme lu",
"notifications": "Notifications",
"view": "Affichage",
"settings": "Paramรจtres",
"minimize": "Rรฉduire",
"maximize": "Agrandir"
},
"menu": {
"close": "Fermer le menu",
"subscriptions": "Abonnements"
},
"article": {
"error": "Impossible de charger l'article.",
"reload": "Recharger ?",
"empty": "Pas d'articles",
"untitled": "(Sans titre)",
"hide": "Masquer l'article",
"unhide": "Afficher l'article",
"markRead": "Marquer comme lu",
"markUnread": "Marquer comme non lu",
"markAbove": "Marquer ci-dessus comme lu",
"markBelow": "Marquer ci-dessous comme lu",
"star": "Mettre en favori",
"unstar": "Supprimer le favori",
"fontSize": "Taille de la police",
"loadWebpage": "Charger la page web",
"loadFull": "Charger tout le contenu",
"notify": "Notifier le chargement en arriรจre-plan",
"dontNotify": "Ne pas notifier"
},
"context": {
"share": "Partager",
"read": "Lire",
"copyTitle": "Copier le titre",
"copyURL": "Copier le lien",
"copy": "Copier",
"search": "Rechercher "{text}" sur {engine}",
"view": "Affichage",
"cardView": "Vue par carte",
"listView": "Vue par liste",
"magazineView": "Vue par magazine",
"compactView": "Vue par compact",
"filter": "Filtrer",
"unreadOnly": "Non lu uniquement",
"starredOnly": "Favoris uniquement",
"fullSearch": "Recherche dans le texte complet",
"showHidden": "Afficher les articles cachรฉs",
"manageSources": "Gรฉrer les sources",
"saveImageAs": "Enregistrer l'image sousโฆ",
"copyImage": "Copier l'image",
"copyImageURL": "Copier l'adresse de l'image",
"caseSensitive": "Sensible ร la casse",
"showCover": "Afficher couverture",
"showSnippet": "Afficher extrait",
"fadeRead": "Attรฉnuer les articles lus"
},
"searchEngine": {
"name": "Moteur de recherche",
"google": "Google",
"bing": "Bing",
"baidu": "Baidu",
"duckduckgo": "DuckDuckGo"
},
"settings": {
"writeError": "Une erreur s'est produite lors de l'รฉcriture du fichier.",
"name": "Paramรจtres",
"fetching": "Mise ร jour des sources, veuillez patienterโฆ",
"exit": "Fermer les paramรจtres",
"sources": "Sources",
"grouping": "Groupes",
"rules": "Rรจgles",
"service": "Service",
"app": "Prรฉfรฉrences",
"about": "ร propos",
"version": "Version",
"shortcuts": "Raccourcis",
"openSource": "Open source",
"feedback": "Feedback"
},
"sources": {
"serviceWarning": "Les sources importรฉes ou ajoutรฉes ici ne seront pas synchronisรฉes avec votre service.",
"serviceManaged": "Cette source est gรฉrรฉe par votre service.",
"untitled": "Source",
"errorAdd": "Une erreur s'est produite lors de l'ajout de la source.",
"errorParse": "Une erreur s'est produite lors de l'analyse du fichier OPML.",
"errorParseHint": "Veuillez vous assurer que le fichier n'est pas corrompu et qu'il est encodรฉ en UTF-8.",
"errorImport": "Erreur d'importation pour {count, plural, =1 {# source} other {# sources}}.",
"exist": "Cette source existe dรฉjร .",
"opmlFile": "Fichier OPML",
"name": "Nom de la source",
"editName": "Modifier le nom",
"fetchFrequency": "Limitation de la frรฉquence de collecte des donnรฉes",
"unlimited": "Illimitรฉ",
"openTarget": "Mode d'ouverture par dรฉfaut des articles",
"delete": "Supprimer la source",
"add": "Ajouter la source",
"import": "Importer",
"export": "Exporter",
"rssText": "Texte complet RSS",
"loadWebpage": "Charger la page web",
"inputUrl": "Saisissez l'adresse URL",
"badIcon": "Icรดne invalide",
"badUrl": "Adresse URL invalide",
"deleteWarning": "La source et tous les articles sauvegardรฉs seront supprimรฉs.",
"selected": "Source sรฉlectionnรฉe",
"selectedMulti": "Sources multiples sรฉlectionnรฉes"
},
"groups": {
"exist": "Ce groupe existe dรฉjร .",
"type": "Type",
"group": "Groupe",
"source": "Source",
"capacity": "Contenu",
"exitGroup": "Retour aux groupes",
"deleteSource": "Supprimer du groupe",
"sourceHint": "Glisser-dรฉposer les sources pour les rรฉorganiser.",
"selectAllSources": "Sรฉlectionner toutes les sources",
"create": "Crรฉer un groupe",
"selectedGroup": "Groupe sรฉlectionnรฉ",
"selectedSource": "Source sรฉlectionnรฉe",
"enterName": "Saisissez un nom",
"editName": "Modifier le nom",
"editGroup": "Modifier le groupe",
"deleteGroup": "Supprimer le groupe",
"chooseGroup": "Selectionner un groupe",
"addToGroup": "Ajouter ร ...",
"groupHint": "Double-cliquez sur le groupe pour modifier ses sources. Faites un glisser-dรฉposer pour rรฉorganiser les sources."
},
"rules": {
"intro": "Marquez automatiquement les articles ou envoyez des notifications avec des expressions rรฉguliรจres.",
"help": "En savoir plus",
"target": "Cible",
"selectTarget": "Sรฉlectionner une cible",
"new": "Nouvelle rรจgle",
"title": "Titre",
"content": "Contenu",
"fullSearch": "Titre ou contenu",
"creator": "Auteur",
"match": "correspond ร ",
"notMatch": "ne correspond pas ร ",
"regex": "Expression rรฉguliรจre",
"badRegex": "Expression rรฉguliรจre invalide.",
"action": "Actions",
"selectAction": "Sรฉlectionner action",
"hint": "Les rรจgles sโappliquent aux nouveaux articles rรฉcupรฉrรฉs : tous les articles โ groupe โ source. Elles sโexรฉcutent de haut en bas ; les actions suivantes ont prioritรฉ. Glissez pour rรฉordonner. Les tests incluent les rรจgles des cibles plus larges.",
"test": "Tester les rรจgles",
"searchField": "Champ de recherche",
"matchCondition": "Condition de correspondance",
"save": "Enregistrer la rรจgle",
"selectAll": "Sรฉlectionner toutes les rรจgles",
"selectRule": "Sรฉlectionner la rรจgle",
"saveError": "Impossible dโenregistrer les rรจgles. Veuillez rรฉessayer."
},
"service": {
"intro": "Synchronisation entre les appareils avec des services RSS.",
"select": "Sรฉlectionner un service",
"suggest": "Proposer un nouveau service",
"overwriteWarning": "Les sources locales seront supprimรฉes si elles existent dans le service.",
"groupsWarning": "Les groupes ne sont pas automatiquement synchronisรฉs avec le service.",
"endpoint": "Adresse",
"username": "Pseudo",
"password": "Mot de passe",
"unchanged": "Inchangรฉ",
"fetchLimit": "Limite de synchronisation",
"fetchLimitNum": "{count} articles rรฉcents",
"importGroups": "Importer des groupes",
"failure": "Impossible de se connecter au service",
"failureHint": "Veuillez vรฉrifier la configuration du service ou l'รฉtat du rรฉseau.",
"fetchUnlimited": "Illimitรฉ (non recommandรฉ)"
},
"app": {
"cleanup": "Nettoyage",
"cache": "Supprimer le cache",
"cacheSize": "{size} de donnรฉes mises en cache",
"deleteChoices": "Supprimer les articles antรฉrieurs ร ... jours",
"confirmDelete": "Supprimer",
"daysAgo": "{days, plural, =1 {# jour} other {# jours}}",
"deleteAll": "Supprimer tous les articles",
"calculatingSize": "Calcul de la taille...",
"itemSize": "Environ {size} du stockage local est occupรฉ par des articles",
"confirmImport": "Voulez-vous vraiment importer des donnรฉes du fichier de sauvegarde ? Toutes les donnรฉes actuelles seront effacรฉes.",
"data": "Donnรฉes de l'appplication",
"backup": "Sauvegarder",
"restore": "Restorer",
"frData": "Donnรฉes de Fluent Reader",
"language": "Langue d'affichage",
"theme": "Thรจme",
"lightTheme": "Mode jour",
"darkTheme": "Mode nuit",
"enableProxy": "Activer le Proxy",
"badUrl": "Adresse URL invalide",
"pac": "Adresse PAC",
"setPac": "Dรฉfinir PAC",
"pacHint": "Pour les proxies Sockets, il est recommandรฉ que le PAC retourne "SOCKS5" pour le DNS cรดtรฉ proxies. La dรฉsactivation du proxy nรฉcessite un redรฉmarrage.",
"fetchInterval": "Intervalle de rรฉcupรฉration automatique",
"never": "Jamais"
}
}
File: src/scripts/i18n/it.json
{
"allArticles": "Tutti gli articoli",
"add": "Aggiungi",
"create": "Crea",
"icon": "Icona",
"name": "Nome",
"openExternal": "Apri Esternamente",
"emptyName": "Questo campo non puo essere vuoto",
"emptyField": "Questo campo non puo essere vuoto",
"edit": "Modifica",
"delete": "Elimina",
"followSystem": "segui impostazioni di sistema",
"more": "di piรน",
"close": "Chiudi",
"search": "Cerca",
"loadMore": "Carica piu feed",
"dangerButton": "Confermi di {action}?",
"confirmMarkAll": "Vuoi veramente segnare tutti i feed di questa pagina come letti?",
"confirm": "Confema",
"cancel": "Anulla",
"time": {
"now": "ora",
"m": "m",
"h": "h",
"d": "g",
"minute": "{m, plural, =1 {# minuto} other {# minuti}}",
"hour": "{h, plural, =1 {# ora} other {# ore}}",
"day": "{d, plural, =1 {# giorno} other {# giorni}}"
},
"log": {
"empty": "Non ci sono notifiche",
"fetchFailure": "Errore nel caricare la fonte "{name}".",
"fetchSuccess": "{count, plural, =1 {# articolo} other {# articoli}} caricato con successo",
"networkError": "รจ occorso un errore di rete",
"parseError": "รจ occorso un errore nel anallizzare il feed rss",
"syncFailure": "Errore nel sicronizzarsi con il servizio"
},
"nav": {
"menu": "Menu",
"refresh": "Aggiorna",
"markAllRead": "Segna tutti come letti",
"notifications": "Notifiche",
"view": "View",
"settings": "Impostazioni",
"minimize": "Riduci a Icona",
"maximize": "Ingrandisci"
},
"menu": {
"close": "Chiudi menu",
"subscriptions": "Iscrizioni"
},
"article": {
"error": "Errore nel caricare articolo",
"reload": "Aggiorna?",
"empty": "Non ci sono articoli",
"untitled": "(Senza titolo)",
"hide": "Nascondi articolo",
"unhide": "Mostra articolo",
"markRead": "Segna come letto",
"markUnread": "Segna come non letto",
"markAbove": "Segna precedenti come letti",
"markBelow": "Segna successivi come letti",
"star": "salva",
"unstar": "rimuovi dai salvati",
"fontSize": "Dimensione testo",
"loadWebpage": "Carica pagina",
"loadFull": "Carica tutto il contenuto",
"notify": "Notifica se caricato in background",
"dontNotify": "Non notificare"
},
"context": {
"share": "Convidi",
"read": "Leggi",
"copyTitle": "Copia titolo",
"copyURL": "Copia link",
"copy": "Copia",
"search": "Cerca "{text}" on {engine}",
"view": "Visualizza",
"cardView": "Card view",
"listView": "List view",
"magazineView": "Magazine view",
"compactView": "Compact view",
"filter": "Filtra",
"unreadOnly": "Solo non letti",
"starredOnly": "Solo Salvati",
"fullSearch": "Cerca in tutto il lesto",
"showHidden": "Visualizza articoli nascosti",
"manageSources": "Gestisci fonti",
"saveImageAs": "Salva immagine come โฆ",
"copyImage": "Copia immagine",
"copyImageURL": "Copia immagine link",
"caseSensitive": "Case sensitive",
"showCover": "Mostra copertina",
"showSnippet": "Show snippet",
"fadeRead": "Scolorisci articoli letti"
},
"searchEngine": {
"name": "Motore di ricerca",
"google": "Google",
"bing": "Bing",
"baidu": "Baidu",
"duckduckgo": "DuckDuckGo"
},
"settings": {
"writeError": "รจ occorso un errore nello scrivere il file",
"name": "Impostazioni",
"fetching": "Aggiornamento delle fonti..Attendi",
"exit": "Esci dalle Impostazioni",
"sources": "Fonti",
"grouping": "Gruppi",
"rules": "Regole",
"service": "Servizio",
"app": "Preferenze",
"about": "Informazioni",
"version": "Versione",
"shortcuts": "Shortcuts",
"openSource": "Open source",
"feedback": "Feedback"
},
"sources": {
"serviceWarning": "le fonti importate o aggiunte qui non saranno sincronizzate con il tuo servizio",
"serviceManaged": "la fonte รจ gesita dal tuo servizio",
"untitled": "Fonte",
"errorAdd": "Un errore รจ occorso nel caricare la fonte",
"errorParse": "Un errore รจ occorso nell analizzare il file OPML",
"errorParseInt": "Assicurati che il file non sia corrotto รจ sia in formato utf-8",
"errorImport": "Errore nel importare {count, plural, =1 {# fonte} other {# fonti}}.",
"exist": "Questa fonte รจ gia stata aggiunta",
"opmlFile": "OPML File",
"name": "Nome fonte",
"editName": "Modifica Nome",
"fetchFrequency": "Limite frecquenza di aggiornamento",
"unlimited": "Senza limite",
"openTarget": "Luogo predefinito di apertura degli articoli",
"delete": "Elimina fonte",
"add": "Aggiungi fonte",
"import": "Importa",
"export": "Esporta",
"rssText": "RSS visualizza tutto il testo",
"loadWebpage": "Carica pagina",
"inputUrl": "Inserisci URL",
"badIcon": "Icona non valida",
"badUrl": "URL non valido",
"deleteWarning": "La fonte รจ tutti i relativi articoli salvati verranno eliminati",
"selected": "Seleziona fonte",
"selectedMulti": "Seleziona piรน fonti"
},
"groups": {
"exist": "Questo gruppo giร esiste",
"type": "Tipo",
"group": "Gruppo",
"source": "Fonte",
"capacity": "Capacita",
"exitGroup": "Ritorna ai gruppi",
"deleteSource": "Rimuovi dal gruppo",
"sourceHint": "Clicca e trascina le fonti per ordinarle",
"selectAllSources": "Seleziona tutte le fonti",
"create": "Crea gruppo",
"selectedGroup": "Seleziona gruppo",
"selectedSource": "Seleziona fonte",
"enterName": "Inserisci nome",
"editName": "Modificaname",
"editGroup": "Modifica gruppo",
"deleteGroup": "Elimina Gruppo",
"chooseGroup": "Seleziona un gruppo",
"addToGroup": "Aggiungi a ...",
"groupHint": "Doppio-Click sul gruppo per modificare le fonti. Clicca e trascina le fonti per ordinarle"
},
"rules": {
"intro": "automaticamentente seleziona articoli o manda notifiche tramite Regex",
"help": "Per saperne di piรน",
"target": "Destinazione",
"selectTarget": "Seleziona una destinazione",
"new": "Nuova Regola",
"title": "Titolo",
"content": "Contenuto",
"fullSearch": "Titolo o Contenuto",
"creator": "Autore",
"match": "Risultati",
"notMatch": "Non ci sono risultati",
"regex": "Espressione Regolare",
"badRegex": "Espressione Regolare Invalida",
"action": "Azioni",
"selectAction": "Seleziona azioni",
"hint": "Le regole si applicano agli articoli appena recuperati: tutti gli articoli โ gruppo โ fonte. Vengono eseguite dallโalto in basso; le azioni successive hanno la precedenza. Trascina per riordinare. I test includono le regole delle destinazioni piรน ampie.",
"test": "Prova le regole",
"searchField": "Campo di ricerca",
"matchCondition": "Condizione di corrispondenza",
"save": "Salva regola",
"selectAll": "Seleziona tutte le regole",
"selectRule": "Seleziona regola",
"saveError": "Impossibile salvare le regole. Riprova."
},
"service": {
"intro": "Sincronizza attraverso i dispositivi i servizi RSS",
"select": "Seleziona un servizio",
"suggest": "Suggerisci un nuovo servizio",
"overwriteWarning": "Le fonti locali verranno eliminate se sono gia presenti nel servizio ",
"groupsWarning": "I gruppi non sono automaticamente sincronizzati con il servizio",
"rateLimitWarning": "Per evitare un limite nella frecquenza di aggiornamento dei avere una API key personalizzata",
"removeAd": "Rimuovi Annuncio",
"endpoint": "Indirizzo",
"username": "Username",
"password": "Password",
"unchanged": "Non modificato",
"fetchLimit": "Limite di Sincronizzazione",
"fetchLimitNum": "{count} articoli recenti",
"importGroups": "Importa gruppi",
"failure": "Impossibile connettersi al servizio",
"failureHint": "Controlla le impostazioni del servizio o se ci sono problemi di connessione",
"fetchUnlimited": "Illimitato (non Raccomandaot)",
"exportToLite": "Esporta a Fluent Reader Lite"
},
"app": {
"cleanup": "Pulisci",
"cache": "Elimina cache",
"cacheSize": "Dimensione Cache {size}",
"deleteChoices": "Rimuovi articoli di ... giorni fร ",
"confirmDelete": "Rimuovi",
"daysAgo": "{days, plural, =1 {# giorno} other {# giorni}} fร ",
"deleteAll": "Rimuovi tutti gli articoli",
"calculatingSize": "Calcolo dimensione...",
"itemSize": "Gli articoli occupano {size} ",
"confirmImport": "Vuoi veramente importare i dati dal file di backup? I dati correnti verranno eliminati",
"data": "Memoria Applicazione",
"backup": "Backup",
"restore": "Ripristina",
"frData": "Fluent Reader Data",
"language": "Lingua Display",
"theme": "Tema",
"lightTheme": "Tema chiaro",
"darkTheme": "Tema scuro",
"enableProxy": "Abilita Proxy",
"badUrl": "URL Invalido",
"pac": "Indirizzo PAC",
"setPac": " Imposta PAC",
"pacHint": "Per proxies Socks, รจ raccomandato per i PAC di ritornare "SOCKS5" per proxy-side DNS. Disabilitare i proxy neccessita il riavvio dell'applicazione",
"fetchInterval": "Ricarica intervallo Automaticamente",
"never": "Mai"
}
}
File: src/scripts/i18n/ja.json
[Binary file]
File: src/scripts/i18n/ko.json
{
"allArticles": "๋ชจ๋ ๊ธ",
"add": "์ถ๊ฐ",
"create": "์์ฑ",
"icon": "์์ด์ฝ",
"name": "์ด๋ฆ",
"openExternal": "๋ธ๋ผ์ฐ์ ๋ฅผ ํตํด ์ด๊ธฐ",
"emptyName": "์ด ์นธ์ ๋น์ด์์ ์ ์์ต๋๋ค.",
"emptyField": "์ด ์นธ์ ๋น์ด์์ ์ ์์ต๋๋ค.",
"edit": "์์ ",
"delete": "์ญ์ ",
"followSystem": "์์คํ
์ค์ ์ ๋ฐ๋ฆ",
"more": "๋ ๋ณด๊ธฐ",
"close": "๋ซ๊ธฐ",
"search": "๊ฒ์",
"loadMore": "๋ ๋ถ๋ฌ์ค๊ธฐ",
"dangerButton": "{action}ํ์๊ฒ ์ต๋๊น?",
"confirmMarkAll": "์ด ํ์ด์ง์ ์๋ ๋ชจ๋ ๊ธ์ ์ฝ์ ๊ฒ์ผ๋ก ์ฒ๋ฆฌํ์๊ฒ ์ต๋๊น?",
"confirm": "ํ์ธ",
"cancel": "์ทจ์",
"time": {
"now": "๋ฐฉ๊ธ",
"m": "๋ถ ์ ",
"h": "์๊ฐ ์ ",
"d": "์ผ ์ ",
"minute": "{m}๋ถ",
"hour": "{h}์๊ฐ",
"day": "{d}์ผ"
},
"log": {
"empty": "์๋ฆผ ์์",
"fetchFailure": "ํผ๋ "{name}"์ ๊ธ์ ๋ถ๋ฌ์ค๋ ๋ฐ์ ์คํจํ์ต๋๋ค.",
"fetchSuccess": "{count}๊ฐ์ ๊ธ์ ๋ถ๋ฌ์ค๋ ๋ฐ์ ์ฑ๊ณตํ์ต๋๋ค.",
"networkError": "๋คํธ์ํฌ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.",
"parseError": "XML ํผ๋๋ฅผ ํ์ฑํ๋ ๋์ค ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.",
"syncFailure": "์๋น์ค์ ๋๊ธฐํ์ ์คํจํ์ต๋๋ค."
},
"nav": {
"menu": "๋ฉ๋ด",
"refresh": "์๋ก๊ณ ์นจ",
"markAllRead": "๋ชจ๋ ์ฝ์ ๊ฒ์ผ๋ก ์ฒ๋ฆฌ",
"notifications": "์๋ฆผ",
"view": "๋ณด๊ธฐ",
"settings": "์ค์ ",
"minimize": "์ต์ํ",
"maximize": "์ต๋ํ"
},
"menu": {
"close": "๋ฉ๋ด ๋ซ๊ธฐ",
"subscriptions": "๊ตฌ๋
"
},
"article": {
"error": "๊ธ์ ๋ถ๋ฌ์ค์ง ๋ชปํ์ต๋๋ค.",
"reload": "๋ค์ ๋ถ๋ฌ์ค์๊ฒ ์ต๋๊น?",
"empty": "๊ธ ์์",
"untitled": "(์ ๋ชฉ ์์)",
"hide": "๊ธ ์จ๊ธฐ๊ธฐ",
"unhide": "๊ธ ์จ๊ธฐ๊ธฐ ์ทจ์",
"markRead": "์ฝ์ ๊ฒ์ผ๋ก ํ์",
"markUnread": "์ฝ์ง ์์ ๊ฒ์ผ๋ก ํ์",
"markAbove": "์์ ์๋ ๊ธ์ ๋ชจ๋ ์ฝ์ ๊ฒ์ผ๋ก ํ์",
"markBelow": "์๋์ ์๋ ๊ธ์ ๋ชจ๋ ์ฝ์ ๊ฒ์ผ๋ก ํ์",
"star": "๊ฐ์กฐ",
"unstar": "๊ฐ์กฐ ์ ๊ฑฐ",
"fontSize": "๊ธ๊ผด ํฌ๊ธฐ",
"loadWebpage": "์นํ์ด์ง ๋ถ๋ฌ์ค๊ธฐ",
"loadFull": "๋ชจ๋ ์ปจํ
์ธ ๋ถ๋ฌ์ค๊ธฐ",
"notify": "๋ฐฑ๊ทธ๋ผ์ด๋ ๋์ ์ค ๊ธ์ ๋ถ๋ฌ์ค๋ฉด ์๋ฆผ",
"dontNotify": "์๋ฆฌ์ง ์์"
},
"context": {
"share": "๊ณต์ ํ๊ธฐ",
"read": "์ฝ๊ธฐ",
"copyTitle": "์ ๋ชฉ ๋ณต์ฌํ๊ธฐ",
"copyURL": "์ฃผ์ ๋ณต์ฌํ๊ธฐ",
"copy": "๋ณต์ฌ",
"search": "{engine}์์ "{text}" ๊ฒ์",
"view": "๋ณด๊ธฐ",
"cardView": "์นด๋",
"listView": "๋ฆฌ์คํธ",
"magazineView": "๋งค๊ฑฐ์ง",
"compactView": "์ปดํฉํธ",
"filter": "ํํฐ",
"unreadOnly": "์ฝ์ง ์์ ๊ธ๋ง",
"starredOnly": "๊ฐ์กฐ ํ์ํ ๊ธ๋ง",
"fullSearch": "๋ณธ๋ฌธ์์๋ ๊ฒ์",
"showHidden": "์จ๊ฒจ์ง ๊ธ ํ์",
"manageSources": "ํผ๋ ๊ด๋ฆฌ",
"saveImageAs": "์ด๋ฏธ์ง ์ ์ฅํ๊ธฐ",
"copyImage": "์ด๋ฏธ์ง ๋ณต์ฌํ๊ธฐ",
"copyImageURL": "์ด๋ฏธ์ง ์ฃผ์ ๋ณต์ฌํ๊ธฐ",
"caseSensitive": "๋์๋ฌธ์ ๊ตฌ๋ถ",
"showCover": "์ปค๋ฒ ์ด๋ฏธ์ง ํ์",
"showSnippet": "์ค๋ํซ ํ์",
"fadeRead": "์ฝ์ ๊ธ์ ํฌ๋ฏธํ๊ฒ ํ์"
},
"searchEngine": {
"name": "๊ฒ์ ์์ง",
"google": "Google",
"bing": "Bing",
"baidu": "Baidu",
"duckduckgo": "DuckDuckGo"
},
"settings": {
"writeError": "ํ์ผ์ ์์ฑํ๋ ๋์ค ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.",
"name": "์ค์ ",
"fetching": "์์ค๋ฅผ ์
๋ฐ์ดํธํ๋ ์ค์
๋๋ค. ์ ์๋ง ๊ธฐ๋ค๋ ค์ฃผ์ธ์โฆ",
"exit": "์ข
๋ฃ",
"sources": "ํผ๋",
"grouping": "๊ทธ๋ฃน",
"rules": "๊ท์น",
"service": "์๋น์ค",
"app": "ํ๊ฒฝ์ค์ ",
"about": "์ด ์ฑ์ ๊ดํ์ฌ",
"version": "๋ฒ์ ",
"shortcuts": "๋จ์ถํค",
"openSource": "์คํ ํผ๋",
"feedback": "ํผ๋๋ฐฑ ์ ์ถ"
},
"sources": {
"serviceWarning": "์ฌ๊ธฐ์ ๋ถ๋ฌ์ค๊ฑฐ๋ ์ถ๊ฐํ ํผ๋๋ ์ฐ๊ฒฐํ ์๋น์ค์ ๋๊ธฐํ๋์ง ์์ต๋๋ค.",
"serviceManaged": "์ด ํผ๋๋ ์ฐ๊ฒฐํ ์๋น์ค์ ์ํด ๊ด๋ฆฌ๋๊ณ ์์ต๋๋ค.",
"untitled": "ํผ๋",
"errorAdd": "ํผ๋๋ฅผ ์ถ๊ฐํ๋ ๋์ค ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.",
"errorParse": "OPML ํ์ผ์ ํ์ฑํ ์ ์์ต๋๋ค.",
"errorParseHint": "ํ์ผ์ด ์์๋์ง ์์๊ณ UTF-8๋ก ์ธ์ฝ๋ฉ ๋์๋์ง ํ์ธํด์ฃผ์ธ์.",
"errorImport": "{count}๊ฐ์ ํผ๋๋ฅผ ๋ถ๋ฌ์ค๋ ๋์ค ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.",
"exist": "์ด๋ฏธ ์กด์ฌํ๋ ํผ๋์
๋๋ค.",
"opmlFile": "OPML ํ์ผ",
"name": "ํผ๋ ์ด๋ฆ",
"editName": "์ด๋ฆ ์์ ",
"fetchFrequency": "ํผ๋ ์๋ก๊ณ ์นจ์ ๊ฑธ๋ฆฌ๋ ์๊ฐ",
"unlimited": "๋ฌด์ ํ",
"openTarget": "๊ธ ๋ถ๋ฌ์ค๋ ๋ฐฉ๋ฒ",
"delete": "ํผ๋ ์ญ์ ",
"add": "ํผ๋ ์ถ๊ฐ",
"import": "๋ถ๋ฌ์ค๊ธฐ",
"export": "๋ด๋ณด๋ด๊ธฐ",
"rssText": "RSS ์ ๋ฌธ",
"loadWebpage": "์นํ์ด์ง ๋ถ๋ฌ๊ณ ์ด",
"inputUrl": "URL ์
๋ ฅ",
"badIcon": "์ ํจํ์ง ์์ ์์ด์ฝ",
"badUrl": "์ ํจํ์ง ์์ URL",
"deleteWarning": "ํผ๋์ ์ ์ฅ๋ ๊ธ๋ค์ด ๋ชจ๋ ์ญ์ ๋ฉ๋๋ค.",
"selected": "์ ํ๋ ํผ๋",
"selectedMulti": "์ ํ๋ ์ฌ๋ฌ ๊ฐ์ ํผ๋"
},
"groups": {
"exist": "์ด๋ฏธ ์กด์ฌํ๋ ๊ทธ๋ฃน์
๋๋ค.",
"type": "์ ํ",
"group": "๊ทธ๋ฃน",
"source": "ํผ๋",
"capacity": "์ฉ๋",
"exitGroup": "๊ทธ๋ฃน์ผ๋ก ๋์๊ฐ๊ธฐ",
"deleteSource": "๊ทธ๋ฃน์์ ์ญ์ ",
"sourceHint": "ํผ๋๋ฅผ ๋์ด์ ์ฌ์ ๋ ฌํ ์ ์์ต๋๋ค.",
"selectAllSources": "๋ชจ๋ ์์ค ์ ํ",
"create": "๊ทธ๋ฃน ์์ฑ",
"selectedGroup": "์ ํ๋ ๊ทธ๋ฃน",
"selectedSource": "์ ํ๋ ํผ๋",
"enterName": "์ด๋ฆ ์
๋ ฅ",
"editName": "์ด๋ฆ ์์ ",
"editGroup": "๊ทธ๋ฃน ํธ์ง",
"deleteGroup": "๊ทธ๋ฃน ์ญ์ ",
"chooseGroup": "๊ทธ๋ฃน ์ ํ",
"addToGroup": "๊ทธ๋ฃน์ ์ถ๊ฐ",
"groupHint": "ํผ๋๋ฅผ ์์ ํ๋ ค๋ฉด ๊ทธ๋ฃน์ ๋๋ธ ํด๋ฆญํ์ธ์. ๋์ด์ ์ฌ์ ๋ ฌํ ์ ์์ต๋๋ค."
},
"rules": {
"intro": "์ ๊ท ํํ์์ผ๋ก ๊ธ์ ๋งํฌํ๊ฑฐ๋ ์๋ฆผ์ ๋ณด๋
๋๋ค.",
"help": "๋ ์์๋ณด๊ธฐ",
"target": "๋์",
"selectTarget": "๋์ ์ ํ",
"new": "์๋ก์ด ๊ท์น",
"title": "์ ๋ชฉ",
"content": "๋ด์ฉ",
"fullSearch": "์ ๋ชฉ ๋๋ ๋ด์ฉ",
"creator": "์์ฑ์",
"match": "์ผ์น",
"notMatch": "์ผ์นํ์ง ์์",
"regex": "์ ๊ท ํํ์",
"badRegex": "์ ํจํ์ง ์์ ์ ๊ท ํํ์์
๋๋ค.",
"action": "ํ๋",
"selectAction": "ํ๋ ์ ํ",
"hint": "๊ท์น์ ์๋ก ๊ฐ์ ธ์จ ๊ธฐ์ฌ์ ๋ชจ๋ ๊ธฐ์ฌ โ ๊ทธ๋ฃน โ ์์ค ์์ผ๋ก ์ ์ฉ๋ฉ๋๋ค. ์์์ ์๋๋ก ์คํ๋๋ฉฐ ์ดํ ๋์์ด ์ฐ์ ํฉ๋๋ค. ๋์ด์ ์์๋ฅผ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ํ
์คํธ์๋ ๋ ๋์ ๋์์ ๊ท์น์ด ํฌํจ๋ฉ๋๋ค.",
"test": "๊ท์น ํ
์คํธ",
"searchField": "๊ฒ์ ํ๋",
"matchCondition": "์ผ์น ์กฐ๊ฑด",
"save": "๊ท์น ์ ์ฅ",
"selectAll": "๋ชจ๋ ๊ท์น ์ ํ",
"selectRule": "๊ท์น ์ ํ",
"saveError": "๊ท์น์ ์ ์ฅํ ์ ์์ต๋๋ค. ๋ค์ ์๋ํด ์ฃผ์ธ์."
},
"service": {
"intro": "RSS ์๋น์ค๋ฅผ ์ด์ฉํ์ฌ ๊ธฐ๊ธฐ๊ฐ ๋๊ธฐํํฉ๋๋ค.",
"select": "์๋น์ค ์ ํ",
"suggest": "์๋ก์ด ์๋น์ค ์ ์",
"overwriteWarning": "์๋น์ค์ ํฌํจ๋ ์ด๋ฏธ ์กด์ฌํ๋ ๋ก์ปฌ ํผ๋๋ ์ญ์ ๋ฉ๋๋ค.",
"groupsWarning": "๊ทธ๋ฃน๋ค์ ์๋น์ค๋ฅผ ํตํด ๋๊ธฐํํ ์ ์์ต๋๋ค.",
"rateLimitWarning": "์ ํ์ ํผํ๋ ค๋ฉด ์์ ๋ง์ API ํค๋ฅผ ๋ง๋ค์ด์ผ ํฉ๋๋ค.",
"removeAd": "๊ด๊ณ ์ ๊ฑฐ",
"endpoint": "์ข
๋จ",
"username": "์ฌ์ฉ์ ์ด๋ฆ",
"password": "๋น๋ฐ๋ฒํธ",
"unchanged": "๋ณ๊ฒฝ์ ์์",
"fetchLimit": "๋๊ธฐํ ์ ํ",
"fetchLimitNum": "์ต๊ทผ {count}๊ฐ์ ๊ธ",
"importGroups": "๊ทธ๋ฃน ๋ถ๋ฌ์ค๊ธฐ",
"failure": "์๋น์ค์ ์ฐ๊ฒฐํ ์ ์์",
"failureHint": "์๋น์ค ์ค์ ์ด๋ ๋คํธ์ํฌ ์ํ๋ฅผ ํ์ธํด๋ณด์ธ์.",
"fetchUnlimited": "์ ํ ์์ (์ถ์ฒํ์ง ์์)",
"exportToLite": "Fluent Reader Lite์ ๋ด๋ณด๋ด๊ธฐ"
},
"app": {
"cleanup": "์ผ๊ด ์ญ์ ",
"cache": "์บ์ ์ง์ฐ๊ธฐ",
"cacheSize": "{size}์ ์บ์๊ฐ ์ ์ฅ๋์ด ์์ต๋๋ค.",
"deleteChoices": "... ์ผ ์ ์ ์์ฑ๋ ๊ธ์ ์ญ์ ",
"confirmDelete": "์ญ์ ",
"daysAgo": "{days}์ผ ์ ",
"deleteAll": "๋ชจ๋ ๊ธ์ ์ญ์ ",
"calculatingSize": "ํฌ๊ธฐ๋ฅผ ๊ณ์ฐํ๋ ์ค์
๋๋ค...",
"itemSize": "๋๋ต {size}์ ๋ก์ปฌ ์ ์ฅ์๊ฐ ๋ถ๋ฌ์จ ๊ธ์ ์ํด ์ ์ ๋๊ณ ์์ต๋๋ค.",
"confirmImport": "๋ฐฑ์
ํ์ผ์ ํตํด์ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ค์๊ฒ ์ต๋๊น? ํ์ฌ ์ ์ฅ๋ ๋ฐ์ดํฐ๊ฐ ๋์ฒด๋ฉ๋๋ค.",
"data": "์ฑ ๋ฐ์ดํฐ",
"backup": "๋ฐฑ์
",
"restore": "๋ณต์",
"frData": "Fluent Reader ๋ฐ์ดํฐ",
"language": "์ธ์ด",
"theme": "ํ
๋ง",
"lightTheme": "๋ผ์ดํธ ๋ชจ๋",
"darkTheme": "๋คํฌ ๋ชจ๋",
"enableProxy": "ํ๋ก์ ํ์ฑํ",
"badUrl": "์ ํจํ์ง ์์ URL",
"pac": "PAC ์ฃผ์",
"setPac": "PAC ์ค์ ",
"pacHint": "Socks ํ๋ก์์ ๊ฒฝ์ฐ์๋ PAC์ด ํ๋ก์์ธก DNS์ "SOCKS5"๋ฅผ ๋ฆฌํดํ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค.. ์ฌ์์ํ๋ ค๋ฉด ํ๋ก์๋ฅผ ์ข
๋ฃํด์ผ ํฉ๋๋ค.",
"fetchInterval": "ํผ๋๋ฅผ ๋ถ๋ฌ์ค๋ ๊ฐ๊ฒฉ",
"never": "ํ์ง ์์"
}
}
File: src/scripts/i18n/nl.json
{
"allArticles": "Alle artikelen",
"add": "Toevoegen",
"create": "Maken",
"icon": "Pictogram",
"name": "Naam",
"openExternal": "Openen in webbrowser",
"emptyName": "Dit veld mag niet blanco zijn.",
"emptyField": "Dit veld mag niet blanco zijn.",
"edit": "Bewerken",
"delete": "Verwijderen",
"followSystem": "Systeeminstellingen gebruiken",
"more": "Meer",
"close": "Sluiten",
"search": "Zoeken",
"loadMore": "Meer laden",
"dangerButton": "{action} bevestigen",
"confirmMarkAll": "Weet je zeker dat je alle artikelen op deze pagina als gelezen wilt markeren?",
"confirm": "Ja",
"cancel": "Annuleren",
"time": {
"now": "nu",
"m": "m",
"h": "u",
"d": "d",
"minute": "{m, plural, =1 {# minuut} other {# minuten}}",
"hour": "{h, plural, =1 {# uur} other {# uur}}",
"day": "{d, plural, =1 {# dag} other {# dagen}}"
},
"log": {
"empty": "Geen meldingen",
"fetchFailure": "De bron, {name}, kan niet worden geladen.",
"fetchSuccess": "Artikelen opgehaald: {count, plural, =1 {# article} other {# articles}}.",
"networkError": "Er is een netwerkfout opgetreden.",
"parseError": "Er is een fout opgetreden tijdens het verwerken van de xml-feed.",
"syncFailure": "Het synchroniseren met de dienst is mislukt"
},
"nav": {
"menu": "Menu",
"refresh": "Verversen",
"markAllRead": "Alles markeren als gelezen",
"notifications": "Meldingen",
"view": "Weergave",
"settings": "Instellingen",
"minimize": "Minimaliseren",
"maximize": "Maximaliseren"
},
"menu": {
"close": "Menu sluiten",
"subscriptions": "Abonnementen"
},
"article": {
"error": "Het artikel kan niet worden geladen.",
"reload": "Herladen?",
"empty": "Geen artikelen",
"untitled": "(naamloos)",
"hide": "Artikel verbergen",
"unhide": "Artikel tonen",
"markRead": "Markeren als gelezen",
"markUnread": "Markeren als ongelezen",
"markAbove": "Artikelen hierboven markeren als gelezen",
"markBelow": "Artikelen hieronder markeren als gelezen",
"star": "Toevoegen aan favorieten",
"unstar": "Verwijderen uit favorieten",
"fontSize": "Tekstgrootte",
"loadWebpage": "Webpagina laden",
"loadFull": "Volledige inhoud laden",
"notify": "Melding tonen na ophalen op achtergrond",
"dontNotify": "Geen melding tonen"
},
"context": {
"share": "Delen",
"read": "Gelezen",
"copyTitle": "Titel kopiรซren",
"copyURL": "Link kopiรซren",
"copy": "Kopiรซren",
"search": "Naar โ{text}โ zoeken op {engine}",
"view": "Weergave",
"cardView": "Kaartweergave",
"listView": "Lijstweergave",
"magazineView": "Tijdschriftweergave",
"compactView": "Compacte weergave",
"filter": "Filteren",
"unreadOnly": "Alleen ongelezen",
"starredOnly": "Alleen favorieten",
"fullSearch": "Volledige tekst doorzoeken",
"showHidden": "Verborgen artikelen tonen",
"manageSources": "Bronnen beheren",
"saveImageAs": "Afbeelding opslaan alsโฆ",
"copyImage": "Afbeelding kopiรซren",
"copyImageURL": "Afbeeldingsadres kopiรซren",
"caseSensitive": "Hoofdlettergevoelig",
"showCover": "Omslag tonen",
"showSnippet": "Knipsel tonen",
"fadeRead": "Gelezen artikelen dimmen"
},
"searchEngine": {
"name": "Zoekmachine",
"google": "Google",
"bing": "Bing",
"baidu": "Baidu",
"duckduckgo": "DuckDuckGo"
},
"settings": {
"writeError": "Er is een fout opgetreden tijdens het wegschrijven van het bestand.",
"name": "Instellingen",
"fetching": "Bezig met bijwerken van bronnenโฆ",
"exit": "Instellingen afsluiten",
"sources": "Bronnen",
"grouping": "Groepen",
"rules": "Regels",
"service": "Dienst",
"app": "Instellingen",
"about": "Over",
"version": "Versie",
"shortcuts": "Sneltoetsen",
"openSource": "Open source",
"feedback": "Feedback"
},
"sources": {
"serviceWarning": "Hier toegevoegde of geรฏmporteerde bronnen worden niet gesynchroniseerd met je dienst.",
"serviceManaged": "Deze bron wordt beheerd door je dienst.",
"untitled": "Bron",
"errorAdd": "Er is een fout opgetreden tijdens het toevoegen.",
"errorParse": "Er is een fout opgetreden tijdens het verwerken van het opml-bestand.",
"errorParseHint": "Controleer of het bestand niet beschadigd is en opgemaakt is met utf-8.",
"errorImport": "Importeren mislukt: {count, plural, =1 {# source} other {# sources}}.",
"exist": "Deze bron is al toegevoegd.",
"opmlFile": "OPML-bestand",
"name": "Bronnaam",
"editName": "Naam bewerken",
"fetchFrequency": "Ophaalfrequentie aanpassen",
"unlimited": "Onbeperkt",
"openTarget": "Standaarddoel bij artikelen",
"delete": "Bron verwijderen",
"add": "Bron toevoegen",
"import": "Importeren",
"export": "Exporteren",
"rssText": "RSS met volledige tekst",
"loadWebpage": "Webpagina laden",
"inputUrl": "Voer een url in",
"badIcon": "Ongeldig pictogram",
"badUrl": "Ongeldige url",
"deleteWarning": "De bron en alle opgeslagen artikelen worden verwijderd.",
"selected": "Gekozen bron",
"selectedMulti": "Meerdere bronnen gekozen"
},
"groups": {
"exist": "Deze groep bestaat al.",
"type": "Soort",
"group": "Groep",
"source": "Bron",
"capacity": "Capaciteit",
"exitGroup": "Terug naar groepen",
"deleteSource": "Verwijderen uit groep",
"sourceHint": "Versleep bronnen om ze anders te rangschikken.",
"selectAllSources": "Alle bronnen selecteren",
"create": "Groep aanmaken",
"selectedGroup": "Gekozen groep",
"selectedSource": "Gekozen bron",
"enterName": "Voer een naam in",
"editName": "Naam aanpassen",
"editGroup": "Groep bewerken",
"deleteGroup": "Groep verwijderen",
"chooseGroup": "Kies een groep",
"addToGroup": "Toevoegen aanโฆ",
"groupHint": "Dubbelklik op een groep om de bronnen ervan aan te passen - versleep om anders te rangschikken."
},
"rules": {
"intro": "Markeer artikelen automatisch of verstuur meldingen met reguliere uitdrukkingen.",
"help": "Meer informatie",
"target": "Doel",
"selectTarget": "Selecteer een doel",
"new": "Nieuwe regel",
"title": "Titel",
"content": "Inhoud",
"fullSearch": "Titel of inhoud",
"creator": "Auteur",
"match": "overeenkomsten",
"notMatch": "komt niet overeen",
"regex": "Reguliere uitdrukking",
"badRegex": "Ongeldige reguliere uitdrukking.",
"action": "Acties",
"selectAction": "Kies acties",
"hint": "Regels gelden voor nieuw opgehaalde artikelen: alle artikelen โ groep โ bron. Ze worden van boven naar beneden uitgevoerd; latere acties hebben voorrang. Sleep om de volgorde te wijzigen. Tests omvatten regels van bredere doelen.",
"test": "Regels testen",
"searchField": "Zoekveld",
"matchCondition": "Overeenkomstvoorwaarde",
"save": "Regel opslaan",
"selectAll": "Alle regels selecteren",
"selectRule": "Regel selecteren",
"saveError": "De regels konden niet worden opgeslagen. Probeer het opnieuw."
},
"service": {
"intro": "Synchroniseer tussen apparaten middels rss-diensten.",
"select": "Kies een dienst",
"suggest": "Nieuwe dienst aandragen",
"overwriteWarning": "Lokale bronnen worden verwijderd als de dienst ze al kent.",
"groupsWarning": "Groepen worden niet automatisch gesynchroniseerd met de dienst.",
"rateLimitWarning": "Geef je eigen api-sleutel op om beperkingen te voorkomen.",
"removeAd": "Reclame verwijderen",
"endpoint": "Endpoint",
"username": "Gebruikersnaam",
"password": "Wachtwoord",
"unchanged": "Ongewijzigd",
"fetchLimit": "Synchronisatielimiet",
"fetchLimitNum": "{count} recentste artikelen",
"importGroups": "Groepen importeren",
"failure": "Er kan geen verbinding worden gemaakt met de dienst",
"failureHint": "Controleer de dienstinstellingen of netwerkstatus.",
"fetchUnlimited": "Onbeperkt (niet aanbevolen)",
"exportToLite": "Exporteren naar Fluent Reader Lite"
},
"app": {
"cleanup": "Opruimen",
"cache": "Cache legen",
"cacheSize": "In cache: {size} aan gegevens",
"deleteChoices": "Artikelen verwijderen die ouder zijn dan โฆ dagen",
"confirmDelete": "Verwijderen",
"daysAgo": "{days, plural, =1 {# dag} other {# dagen}} geleden",
"deleteAll": "Alle artikelen verwijderen",
"calculatingSize": "Bezig met grootteberekeningโฆ",
"itemSize": "De artikelen nemen ongeveer {size} aan lokale opslag in beslag",
"confirmImport": "Weet je zeker dat je artikelen wilt importeren uit een back-upbestand? Alle huidige gegevens worden verwijderd.",
"data": "Programmagegevens",
"backup": "Back-uppen",
"restore": "Herstellen",
"frData": "Fluent Reader-gegevens",
"language": "Weergavetaal",
"theme": "Thema",
"lightTheme": "Licht",
"darkTheme": "Donker",
"enableProxy": "Proxy gebruiken",
"badUrl": "Ongeldige url",
"pac": "PAC-adres",
"setPac": "PAC instellen",
"pacHint": "Bij Socks-proxies is het aanbevolen om PAC โSOCKS5โ te laten ophalen aan de dns-kant. Herstart om de proxy uit te schakelen.",
"fetchInterval": "Automatisch ophalen",
"never": "Nooit"
}
}
File: src/scripts/i18n/pl.json
{
"allArticles": "Wszystkie wpisy",
"add": "Dodaj",
"create": "Utwรณrz",
"icon": "Ikona",
"name": "Tytuล",
"openExternal": "Otwรณrz poza aplikacjฤ
",
"emptyName": "To pole nie moลผe pozostaฤ puste.",
"emptyField": "To pole nie moลผe pozostaฤ puste.",
"edit": "Edytuj",
"delete": "Usuล",
"followSystem": "Zgodnie z systemem",
"more": "Wiฤcej",
"close": "Zamknij",
"search": "Szukaj",
"loadMore": "Doลaduj",
"dangerButton": "Potwierdลบ {action}?",
"confirmMarkAll": "Czy na pewno chcesz oznaczyฤ wszystkie wpisy na tej stronie jako przeczytane?",
"confirm": "Potwierdลบ",
"cancel": "Anuluj",
"default": "Domyลlnie",
"time": {
"now": "teraz",
"m": "m",
"h": "h",
"d": "d",
"minute": "{m, plural, zero {# minut} one {# minuta} few {# minuty} many {# minut} other {# minut}}",
"hour": "{h, plural, zero {# godzin} one {# godzina} few {# godziny} many {# godzin} other {# godzin}}",
"day": "{d, plural, zero {# dni} one {# dzieล} other {# dni}}"
},
"log": {
"empty": "Brak powiadomieล",
"fetchFailure": "Nie udaลo siฤ zaลadowaฤ ลบrรณdลa "{name}".",
"fetchSuccess": "Pobrano {count, plural, zero {# wpisรณw} one {# wpis} few {# wpisy} other {# wpisรณw}}.",
"networkError": "Wystฤ
piล problem z sieciฤ
.",
"parseError": "Wystฤ
piล problem w interpretacji kanaลu XML.",
"syncFailure": "Synchronizacja z usลugฤ
nie powiodลa siฤ"
},
"nav": {
"menu": "Menu",
"refresh": "Odลwieลผ",
"markAllRead": "Oznacz wszystkie jako przeczytane",
"notifications": "Powiadomienia",
"view": "Widok",
"settings": "Ustawienia",
"minimize": "Minimalizuj",
"maximize": "Maksymalizuj"
},
"menu": {
"close": "Zamknij menu",
"subscriptions": "Subskrypcje"
},
"article": {
"error": "Nie zaลadowano wpisu.",
"reload": "Przeลadowaฤ?",
"empty": "Brak wpisรณw",
"untitled": "(Bez tytuลu)",
"hide": "Ukryj wpis",
"unhide": "Pokaลผ wpis",
"markRead": "Oznacz jako przeczytany",
"markUnread": "Oznacz jako nieprzeczytany",
"markAbove": "Oznacz powyลผsze jako przeczytane",
"markBelow": "Oznacz poniลผsze jako przeczytane",
"star": "Oznacz gwiazdkฤ
",
"unstar": "Usuล gwiazdkฤ",
"fontSize": "Rozmiar czcionki",
"loadWebpage": "Zaลaduj stronฤ internetowฤ
",
"loadFull": "Zaลaduj peลnฤ
zawartoลฤ",
"notify": "Powiadom po pobraniu w tle",
"dontNotify": "Nie powiadamiaj",
"textDir": "Kierunek tekstu",
"LTR": "Od lewej do prawej",
"RTL": "Od prawej do lewej",
"Vertical": "Pionowo",
"font": "Czcionka"
},
"context": {
"share": "Udostฤpnij",
"read": "Czytaj",
"copyTitle": "Skopiuj tytuล",
"copyURL": "Skopiuj ลฤ
cze",
"copy": "Kopiuj",
"search": "Szukaj "{text}" uลผywajฤ
c {engine}",
"view": "Widok",
"cardView": "Widok karciany",
"listView": "Widok listy",
"magazineView": "Widok magazynu",
"compactView": "Widok kompaktowy",
"filter": "Filtrowanie",
"unreadOnly": "Tylko nieprzeczytane",
"starredOnly": "Tylko oznaczone gwiazdkฤ
",
"fullSearch": "Przeszukiwanie caลej treลci",
"showHidden": "Pokaลผ ukryte wpisy",
"manageSources": "Zarzฤ
dzaj ลบrรณdลami",
"saveImageAs": "Zapisz obraz jako โฆ",
"copyImage": "Kopiuj obraz",
"copyImageURL": "Kopiuj ลฤ
cze do obrazu",
"caseSensitive": "Sprawdzaj wielkoลฤ liter",
"showCover": "Pokaลผ okลadkฤ",
"showSnippet": "Pokaลผ podglฤ
d",
"fadeRead": "Przyฤmij przeczytane wpisy"
},
"searchEngine": {
"name": "Wyszukiwarka",
"google": "Google",
"bing": "Bing",
"baidu": "Baidu",
"duckduckgo": "DuckDuckGo"
},
"settings": {
"writeError": "Wystฤ
piล bลฤ
d podczas zapisu do pliku.",
"name": "Ustawienia",
"fetching": "Aktualizacja ลบrรณdeล, proszฤ czekaฤ โฆ",
"exit": "Zamknij ustawienia",
"sources": "ลนrรณdลa",
"grouping": "Grupy",
"rules": "Reguลy",
"service": "Usลuga",
"app": "Preferencje",
"about": "O aplikacji",
"version": "Wersja",
"shortcuts": "Skrรณty klawiszowe",
"openSource": "Otwarte ลบrรณdลo",
"feedback": "Opinie"
},
"sources": {
"serviceWarning": "ลนrรณdลa zaimportowane lub dodane w tym miejscu nie bฤdฤ
synchronizowane z twojฤ
usลugฤ
.",
"serviceManaged": "To ลบrรณdลo jest zarzฤ
dzane przez twojฤ
usลugฤ.",
"untitled": "ลนrรณdลo",
"errorAdd": "Wystฤ
piล bลad z dodawaniem ลบrรณdลa.",
"errorParse": "Wystฤ
piล bลฤ
d z odczytywaniem pliku OPML.",
"errorParseHint": "Upewnij siฤ, ลผe plik uลผywa kodowania UTF-8 i jest poprawnie zapisany.",
"errorImport": "Bลad w importowaniu {count, plural, zero {# ลบrรณdeล} one {# ลบrรณdลa} other {# ลบrรณdeล}}.",
"exist": "To ลบrรณdลo juลผ istnieje.",
"opmlFile": "Plik OPML",
"name": "Nazwa ลบrรณdลa",
"editName": "Edytuj nazwฤ",
"fetchFrequency": "Czฤstotliwoลฤ sprawdzania",
"unlimited": "Nielimitowana",
"openTarget": "Domyลlny sposรณb otwierania wpisรณw",
"delete": "Usuล ลบrรณdลo",
"add": "Dodaj ลบrรณdลo",
"import": "Importuj",
"export": "Eksportuj",
"rssText": "Caลy tekst RSS",
"loadWebpage": "Zaลaduj stronฤ",
"inputUrl": "Wpisz URL",
"badIcon": "Niepoprawna ikona",
"badUrl": "Niepoprawny URL",
"deleteWarning": "ลนrรณdลo i wszystkie pobrane wpisy zostanฤ
usuniฤte.",
"selected": "Wybrane ลบrรณdลo",
"selectedMulti": "Wybrano wiele ลบrรณdeล",
"hidden": "Ukryj w widoku wszystkich wpisรณw"
},
"groups": {
"exist": "Taka grupa juลผ istnieje.",
"type": "Typ",
"group": "Grupa",
"source": "ลนrรณdลo",
"capacity": "Licznoลฤ",
"exitGroup": "Wrรณฤ do grup",
"deleteSource": "Usuล z grupy",
"sourceHint": "Przeciฤ
gaj ลบrรณdลa, aby zmieniฤ ich kolejnoลฤ.",
"selectAllSources": "Zaznacz wszystkie ลบrรณdลa",
"create": "Stwรณrz grupฤ",
"selectedGroup": "Wybrane grupy",
"selectedSource": "Wybrane ลบrรณdลa",
"enterName": "Podaj nazwฤ",
"editName": "Edytuj nazwฤ",
"editGroup": "Edytuj grupฤ",
"deleteGroup": "Usuล grupฤ",
"chooseGroup": "Wybierz grupฤ",
"addToGroup": "Dodaj do โฆ",
"groupHint": "Kliknij dwukrotnie na grupฤ, aby edytowaฤ ลบrรณdลa. Przeciฤ
gnij, by zmieniฤ kolejnoลฤ."
},
"rules": {
"intro": "Automatycznie oznaczaj wpisy lub wysyลaj powiadomienia w oparciu o wyraลผenia regularne.",
"help": "Dowiedz siฤ wiฤcej",
"target": "Cel",
"selectTarget": "Wybierz cel",
"new": "Nowa reguลa",
"title": "Tytuล",
"content": "Zawartoลฤ",
"fullSearch": "Tytuล lub zawartoลฤ",
"creator": "Autor",
"match": "pasuje do",
"notMatch": "nie pasuje do",
"regex": "wyraลผenia regularnego",
"badRegex": "Niepoprawne wyraลผenie regularne.",
"action": "Akcje",
"selectAction": "Wybierz akcje",
"hint": "Reguลy dotyczฤ
nowo pobranych artykuลรณw: wszystkie artykuลy โ grupa โ ลบrรณdลo. Sฤ
wykonywane od gรณry do doลu; pรณลบniejsze dziaลania majฤ
pierwszeลstwo. Przeciฤ
gnij, aby zmieniฤ kolejnoลฤ. Testy obejmujฤ
reguลy szerszych celรณw.",
"test": "Przetesuj reguลฤ",
"searchField": "Pole wyszukiwania",
"matchCondition": "Warunek dopasowania",
"save": "Zapisz reguลฤ",
"selectAll": "Wybierz wszystkie reguลy",
"selectRule": "Wybierz reguลฤ",
"saveError": "Nie udaลo siฤ zapisaฤ reguล. Sprรณbuj ponownie."
},
"service": {
"intro": "Synchronizuj urzฤ
dzenia z pomocฤ
usลug RSS.",
"select": "Wybierz usลugฤ",
"suggest": "Zasugeruj nowฤ
usลugฤ",
"overwriteWarning": "Lokalne ลบrรณdลa bฤdฤ
zastฤ
pione, jeลli majฤ
odpowiedniki w usลudze.",
"groupsWarning": "Grupy nie sฤ
automatycznie synchronizowane w usลudze.",
"rateLimitWarning": "Aby zapobiec ograniczeniu czฤstotliwoลci zapytaล musisz stworzyฤ wลasny klucz API.",
"removeAd": "Usuล reklamฤ",
"endpoint": "Endpoint",
"username": "Nazwa uลผytkownika",
"password": "Hasลo",
"unchanged": "Bez zmian",
"fetchLimit": "Limit synchronizacji",
"fetchLimitNum": "{count} najnowszych wpisรณw",
"importGroups": "Importuj grupy",
"failure": "Nie moลผna poลฤ
czyฤ siฤ z usลugฤ
",
"failureHint": "Sprawdลบ konfiguracjฤ usลugi i czy jest z niฤ
poลฤ
czenie.",
"fetchUnlimited": "Nielimitowana (niezalecana)",
"exportToLite": "Eksportuj do Fluent Reader Lite"
},
"app": {
"cleanup": "Wyczyลฤ",
"cache": "Wyczyลฤ pamiฤฤ podrฤcznฤ
",
"cacheSize": "Przechowano {size} danych",
"deleteChoices": "Usuล wpisy sprzed ... dni",
"confirmDelete": "Usuล",
"daysAgo": "{days, plural, zero {# dni} one {# dzieล} other {# dni}}",
"deleteAll": "Usuล wszystkie wpisy",
"calculatingSize": "Szacowanie rozmiaru...",
"itemSize": "Zachowane wpisy zajmujฤ
okoลo {size} miejsca na dysku.",
"confirmImport": "Czy na pewno chcesz zaimportowaฤ dane z kopii zapasowej? Wszystkie aktualne dane bฤdฤ
wyczyszczone.",
"data": "Dane aplikacji",
"backup": "Utwรณrz kopiฤ zapasowฤ
",
"restore": "Odtwรณrz dane z kopii zapasowej",
"frData": "Dane programu Fluent Reader",
"language": "Jฤzyk interfejsu",
"theme": "Motyw",
"lightTheme": "Jasny",
"darkTheme": "Ciemny",
"enableProxy": "Uลผyj serwera poลredniczฤ
cego",
"badUrl": "Niepoprawny URL",
"pac": "Adres PAC",
"setPac": "Ustaw PAC",
"pacHint": "Dla serwerรณw proxy Socks, zalecane jest aby PAC zwrรณciล "SOCKS5" dla DNS po stronie proxy. Wyลฤ
czenie serwera poลredniczฤ
cego wymaga restartu.",
"fetchInterval": "Czฤstotliwoลฤ automatycznego pobierania danych",
"never": "Nigdy"
}
}
File: src/scripts/i18n/pt-BR.json
{
"allArticles": "Todos os artigos",
"add": "Adicionar",
"create": "Criar",
"icon": "รcone",
"name": "Nome",
"openExternal": "Abrir externamente",
"emptyName": "Este campo nรฃo pode ficar vazio.",
"emptyField": "Este campo nรฃo pode ficar vazio.",
"edit": "Editar",
"delete": "Deletar",
"followSystem": "Seguir o sistema",
"more": "Mais",
"close": "Fechar",
"search": "Pesquisar",
"loadMore": "Carregar mais",
"dangerButton": "Confirmar {action}?",
"confirmMarkAll": "Vocรช realmente deseja marcar todos os artigos dessa pรกgina como lidos?",
"confirm": "Confirmar",
"cancel": "Cancelar",
"time": {
"now": "agora",
"m": "m",
"h": "h",
"d": "d",
"minute": "{m, plural, =1 {# minuto} other {# minutos}}",
"hour": "{h, plural, =1 {# hora} other {# horas}}",
"day": "{d, plural, =1 {# dia} other {# dias}}"
},
"log": {
"empty": "Nenhuma notificaรงรฃo",
"fetchFailure": "Falha ao carregar a fonte "{name}".",
"fetchSuccess": "{count, plural, =1 {# Artigo} other {# Artigos}} foram atualizados com sucesso.",
"networkError": "Ocorreu um erro na rede.",
"parseError": "Ocorreu um erro ao analisar o feed XML.",
"syncFailure": "Falha ao sincronizar com o serviรงo"
},
"nav": {
"menu": "Menu",
"refresh": "Atualizar",
"markAllRead": "Marcar todos como lidos",
"notifications": "Notificaรงรตes",
"view": "Visualizaรงรฃo",
"settings": "Configuraรงรตes",
"minimize": "Minimizar",
"maximize": "Maximizar"
},
"menu": {
"close": "Fechar menu",
"subscriptions": "Inscriรงรตes"
},
"article": {
"error": "Falha ao carregar o artigo.",
"reload": "Recarregar?",
"empty": "Nenhum artigo",
"untitled": "(Sem tรญtulo)",
"hide": "Ocultar artigo",
"unhide": "Exibir artigo",
"markRead": "Marcar como lido",
"markUnread": "Marcar como nรฃo lido",
"markAbove": "Marcar artigo(s) abaixo como lido(s)",
"markBelow": "Marcar artigo(s) abaixo como nรฃo lido(s)",
"star": "Marcar como favorito",
"unstar": "Remover marcaรงรฃo",
"fontSize": "Tamanho da fonte",
"loadWebpage": "Carregar pรกgina web",
"loadFull": "Carregar todo o conteรบdo",
"notify": "Notificar se atualizado em segundo plano",
"dontNotify": "Nรฃo notificar"
},
"context": {
"share": "Compartilhar",
"read": "Ler",
"copyTitle": "Copiar tรญtulo",
"copyURL": "Copiar link",
"copy": "Copiar",
"search": "Pesquisar "{text}" no {engine}",
"view": "Visualizaรงรฃo",
"cardView": "Como cartรตes",
"listView": "Em lista",
"magazineView": "Como revista",
"compactView": "Compacto",
"filter": "Filtrar",
"unreadOnly": "Somente nรฃo lidos",
"starredOnly": "Somente favoritos",
"fullSearch": "Pesquisar em todo o texto",
"showHidden": "Exibir artigos ocultos",
"manageSources": "Gerenciar fontes",
"saveImageAs": "Salvar imagem como โฆ",
"copyImage": "Copiar imagem",
"copyImageURL": "Copiar link da imagem",
"caseSensitive": "Diferenciar maiรบsculas e minรบsculas",
"showCover": "Exibir capa",
"showSnippet": "Mostrar trecho",
"fadeRead": "Esmaecer artigos lidos"
},
"searchEngine": {
"name": "Motor de pesquisa",
"google": "Google",
"bing": "Bing",
"baidu": "Baidu",
"duckduckgo": "DuckDuckGo"
},
"settings": {
"writeError": "Ocorreu um erro ao gravar o arquivo.",
"name": "Configuraรงรตes",
"fetching": "Atualizando fontes, por favor aguarde โฆ",
"exit": "Sair das Configuraรงรตes",
"sources": "Fontes",
"grouping": "Grupos",
"rules": "Regras",
"service": "Serviรงo",
"app": "Preferรชncias",
"about": "Sobre",
"version": "Versรฃo",
"shortcuts": "Atalhos",
"openSource": "Cรณdigo aberto",
"feedback": "Feedback"
},
"sources": {
"serviceWarning": "Fontes importadas ou adicionadas aqui nรฃo serรฃo sincronizadas com o seu serviรงo.",
"serviceManaged": "Essa fonte รฉ gerenciada pelo seu serviรงo.",
"untitled": "Fonte",
"errorAdd": "Ocorreu um erro ao adicionar a fonte.",
"errorParse": "Ocorreu um erro ao analisar o arquivo OPML.",
"errorParseHint": "Certifique-se de que o arquivo nรฃo esteja corrompido e que esteja codificado com UTF-8.",
"errorImport": "Erro ao importar {count, plural, =1 {# fonte} other {# fontes}}.",
"exist": "Esta fonte jรก existe.",
"opmlFile": "Arquivo OPML",
"name": "Nome da fonte",
"editName": "Editar nome",
"fetchFrequency": "Limite da frequรชncia de atualizaรงรฃo",
"unlimited": "Ilimitado",
"openTarget": "Mรฉtodo padrรฃo de carregamento dos artigos",
"delete": "Deletar fonte",
"add": "Adicionar fonte",
"import": "Importar",
"export": "Exportar",
"rssText": "Texto completo do RSS",
"loadWebpage": "Carregar pรกgina web",
"inputUrl": "Insira a URL",
"badIcon": "รcone invรกlido",
"badUrl": "URL invรกlida",
"deleteWarning": "A fonte e todos os artigos salvos serรฃo removidos.",
"selected": "Fonte selecionada",
"selectedMulti": "Mรบltiplas fontes selecionadas"
},
"groups": {
"exist": "Este grupo jรก existe.",
"type": "Tipo",
"group": "Grupo",
"source": "Fonte",
"capacity": "Capacidade",
"exitGroup": "Voltar para os grupos",
"deleteSource": "Deletar deste grupo",
"sourceHint": "Arraste e solte as fontes para reorganizรก-las.",
"selectAllSources": "Selecionar todas as fontes",
"create": "Criar grupo",
"selectedGroup": "Grupo selecionado",
"selectedSource": "Fonte selecionada",
"enterName": "Insira o nome",
"editName": "Editar o nome",
"editGroup": "Editar grupo",
"deleteGroup": "Deletar grupo",
"chooseGroup": "Selecione um grupo",
"addToGroup": "Adicionar para ...",
"groupHint": "Clique duplo nos grupos para editar as fontes; Arraste e solte para reorganizรก-los."
},
"rules": {
"intro": "Marcar artigos automaticamente ou enviar notificaรงรตes com base em regras de expressรตes regulares.",
"help": "Saiba mais",
"target": "Destino",
"selectTarget": "Selecione um destino",
"new": "Nova regra",
"title": "Tรญtulo",
"content": "Conteรบdo",
"fullSearch": "Tรญtulo ou conteรบdo",
"creator": "Autor",
"match": "corresponde",
"notMatch": "nรฃo corresponde",
"regex": "Expressรฃo regular",
"badRegex": "Expressรฃo regular invรกlida.",
"action": "Aรงรตes",
"selectAction": "Selecionar aรงรตes",
"hint": "As regras se aplicam aos artigos recรฉm-obtidos: todos os artigos โ grupo โ fonte. Sรฃo executadas de cima para baixo; aรงรตes posteriores tรชm prioridade. Arraste para reordenar. Os testes incluem regras de destinos mais amplos.",
"test": "Testar regras",
"searchField": "Campo de pesquisa",
"matchCondition": "Condiรงรฃo de correspondรชncia",
"save": "Salvar regra",
"selectAll": "Selecionar todas as regras",
"selectRule": "Selecionar regra",
"saveError": "Nรฃo foi possรญvel salvar as regras. Tente novamente."
},
"service": {
"intro": "Sincronizaรงรฃo entre dispositivos com serviรงos RSS.",
"select": "Selecione um serviรงo",
"suggest": "Sugerir um novo serviรงo",
"overwriteWarning": "Fontes locais serรฃo deletas se elas existirem no serviรงo.",
"groupsWarning": "Grupos nรฃo sรฃo automaticamente sincronizados com o serviรงo.",
"rateLimitWarning": "Para evitar limitaรงรตes do serviรงo, vocรช precisa criar sua prรณpria chave de API.",
"removeAd": "Remover Ad",
"endpoint": "Endpoint",
"username": "Usuรกrio",
"password": "Senha",
"unchanged": "Inalterado",
"fetchLimit": "Limite de sincronizaรงรฃo",
"fetchLimitNum": "{count} รบltimos artigos",
"importGroups": "Importar grupos",
"failure": "Nรฃo foi possรญvel conectar ao serviรงo",
"failureHint": "Por favor verifique a configuraรงรฃo do serviรงo ou o status da rede.",
"fetchUnlimited": "Ilimitado (nรฃo recomendado)",
"exportToLite": "Exportar para o Fluent Reader Lite"
},
"app": {
"cleanup": "Limpeza",
"cache": "Limpar cache",
"cacheSize": "{size} de dados em cache",
"deleteChoices": "Deletar artigos de ... dias atrรกs",
"confirmDelete": "Deletar",
"daysAgo": "{days, plural, =1 {# dia} other {# dias}} atrรกs",
"deleteAll": "Deletar todos os artigos",
"calculatingSize": "Calculando tamanho...",
"itemSize": "Cerca de {size} do armazenamento local รฉ ocupado por artigos",
"confirmImport": "Vocรช realmente deseja importar os dados do arquivo de backup? Todos os dados atuais serรฃo apagados.",
"data": "Dados da aplicaรงรฃo",
"backup": "Backup",
"restore": "Restaurar",
"frData": "Dados do Fluent Reader",
"language": "Idioma",
"theme": "Tema",
"lightTheme": "Modo claro",
"darkTheme": "Modo escuro",
"enableProxy": "Ativar proxy",
"badUrl": "URL invรกlida",
"pac": "Endereรงo PAC",
"setPac": "Definir PAC",
"pacHint": "For Socks proxies, it is recommended for PAC to return "SOCKS5" for proxy-side DNS. Turning off proxy requires restart.",
"fetchInterval": "Intervalo de atualizaรงรฃo automรกtica",
"never": "Nunca"
}
}
File: src/scripts/i18n/pt-PT.json
{
"allArticles": "Todos os artigos",
"add": "Adicionar",
"create": "Criar",
"icon": "รcone",
"name": "Nome",
"openExternal": "Abrir externamente",
"emptyName": "Este campo nรฃo pode ficar vazio.",
"emptyField": "Este campo nรฃo pode ficar vazio.",
"edit": "Editar",
"delete": "Eliminar",
"followSystem": "Seguir o sistema",
"more": "Mais",
"close": "Fechar",
"search": "Pesquisar",
"loadMore": "Carregar mais",
"dangerButton": "Confirmar {action}?",
"confirmMarkAll": "Deseja mesmo marcar todos os artigos desta pรกgina como lidos?",
"confirm": "Confirmar",
"cancel": "Cancelar",
"default": "Padrรฃo",
"time": {
"now": "agora",
"m": "m",
"h": "h",
"d": "d",
"minute": "{m, plural, =1 {# minuto} other {# minutos}}",
"hour": "{h, plural, =1 {# hora} other {# horas}}",
"day": "{d, plural, =1 {# dia} other {# dias}}"
},
"log": {
"empty": "Nenhuma notificaรงรฃo",
"fetchFailure": "Falha ao carregar a fonte "{name}".",
"fetchSuccess": "{count, plural, =1 {# Artigo} other {# Artigos}} foram atualizados com sucesso.",
"networkError": "Ocorreu um erro na rede.",
"parseError": "Ocorreu um erro ao analisar o feed XML.",
"syncFailure": "Falha ao sincronizar com o serviรงo"
},
"nav": {
"menu": "Menu",
"refresh": "Atualizar",
"markAllRead": "Marcar todos como lidos",
"notifications": "Notificaรงรตes",
"view": "Visualizaรงรฃo",
"settings": "Definiรงรตes",
"minimize": "Minimizar",
"maximize": "Maximizar"
},
"menu": {
"close": "Fechar menu",
"subscriptions": "Subscriรงรตes"
},
"article": {
"error": "Falha ao carregar o artigo.",
"reload": "Recarregar?",
"empty": "Nenhum artigo",
"untitled": "(Sem tรญtulo)",
"hide": "Ocultar artigo",
"unhide": "Exibir artigo",
"markRead": "Marcar como lido",
"markUnread": "Marcar como nรฃo lido",
"markAbove": "Marcar artigo(s) acima como lido(s)",
"markBelow": "Marcar artigo(s) abaixo como nรฃo lido(s)",
"star": "Marcar como favorito",
"unstar": "Remover marcaรงรฃo",
"fontSize": "Tamanho da fonte",
"loadWebpage": "Carregar pรกgina web",
"loadFull": "Carregar todo o conteรบdo",
"notify": "Notificar se atualizado em segundo plano",
"dontNotify": "Nรฃo notificar",
"textDir": "Direรงรฃo do texto",
"LTR": "Esquerda-para-direita",
"RTL": "Direita-para-esquerda",
"Vertical": "Vertical",
"font": "Fonte"
},
"context": {
"share": "Partilhar",
"read": "Ler",
"copyTitle": "Copiar tรญtulo",
"copyURL": "Copiar link",
"copy": "Copiar",
"search": "Pesquisar "{text}" no {engine}",
"view": "Visualizar",
"cardView": "Como cartรตes",
"listView": "Em lista",
"magazineView": "Como revista",
"compactView": "Compacto",
"filter": "Filtrar",
"unreadOnly": "Apenas nรฃo lidos",
"starredOnly": "Apenas favoritos",
"fullSearch": "Pesquisar em todo o texto",
"showHidden": "Exibir artigos ocultos",
"manageSources": "Gerir fontes",
"saveImageAs": "Guardar imagem como โฆ",
"copyImage": "Copiar imagem",
"copyImageURL": "Copiar link da imagem",
"caseSensitive": "Diferenciar maiรบsculas e minรบsculas",
"showCover": "Mostrar capa",
"showSnippet": "Mostrar trecho",
"fadeRead": "Desaparecer artigos lidos"
},
"searchEngine": {
"name": "Motor de pesquisa",
"google": "Google",
"bing": "Bing",
"baidu": "Baidu",
"duckduckgo": "DuckDuckGo"
},
"settings": {
"writeError": "Ocorreu um erro ao gravar o ficheiro.",
"name": "Definiรงรตes",
"fetching": "Atualizando fontes, aguarde por favor โฆ",
"exit": "Sair das definiรงรตes",
"sources": "Fontes",
"grouping": "Grupos",
"rules": "Regras",
"service": "Serviรงo",
"app": "Preferรชncias",
"about": "Sobre",
"version": "Versรฃo",
"shortcuts": "Atalhos",
"openSource": "Cรณdigo aberto",
"feedback": "Feedback"
},
"sources": {
"serviceWarning": "Fontes importadas ou adicionadas aqui nรฃo serรฃo sincronizadas com o seu serviรงo.",
"serviceManaged": "Esta fonte รฉ gerenciada pelo seu serviรงo.",
"untitled": "Fonte",
"errorAdd": "Ocorreu um erro ao adicionar a fonte.",
"errorParse": "Ocorreu um erro ao analisar o arquivo OPML.",
"errorParseHint": "Certifique-se de que o arquivo nรฃo esteja corrompido e que esteja codificado com UTF-8.",
"errorImport": "Erro ao importar {count, plural, =1 {# fonte} other {# fontes}}.",
"exist": "Esta fonte jรก existe.",
"opmlFile": "Ficheiro OPML",
"name": "Nome da fonte",
"editName": "Editar nome",
"fetchFrequency": "Limite da frequรชncia de atualizaรงรฃo",
"unlimited": "Ilimitado",
"openTarget": "Mรฉtodo padrรฃo de carregamento dos artigos",
"delete": "Eliminar fonte",
"add": "Adicionar fonte",
"import": "Importar",
"export": "Exportar",
"rssText": "Texto completo do RSS",
"loadWebpage": "Carregar pรกgina web",
"inputUrl": "Insira a URL",
"badIcon": "รcone invรกlido",
"badUrl": "URL invรกlida",
"deleteWarning": "A fonte e todos os artigos guardados serรฃo removidos.",
"selected": "Fonte selecionada",
"selectedMulti": "Mรบltiplas fontes selecionadas"
},
"groups": {
"exist": "Este grupo jรก existe.",
"type": "Tipo",
"group": "Grupo",
"source": "Fonte",
"capacity": "Capacidade",
"exitGroup": "Voltar para os grupos",
"deleteSource": "Eliminar do grupo",
"sourceHint": "Arraste e solte as fontes para reorganizรก-las.",
"selectAllSources": "Selecionar todas as fontes",
"create": "Criar grupo",
"selectedGroup": "Grupo selecionado",
"selectedSource": "Fonte selecionada",
"enterName": "Insira o nome",
"editName": "Editar nome",
"editGroup": "Editar grupo",
"deleteGroup": "Eliminar grupo",
"chooseGroup": "Selecione um grupo",
"addToGroup": "Adicionar a ...",
"groupHint": "Clique duplo no grupo para editar as fontes. Arraste e solte para reorganizรก-los."
},
"rules": {
"intro": "Marcar artigos automaticamente ou enviar notificaรงรตes com expressรตes regulares.",
"help": "Saber mais",
"target": "Destino",
"selectTarget": "Selecione um destino",
"new": "Nova regra",
"title": "Tรญtulo",
"content": "Conteรบdo",
"fullSearch": "Tรญtulo ou conteรบdo",
"creator": "Autor",
"match": "corresponde",
"notMatch": "nรฃo corresponde",
"regex": "Expressรฃo regular",
"badRegex": "Expressรฃo regular invรกlida.",
"action": "Aรงรตes",
"selectAction": "Selecionar aรงรตes",
"hint": "As regras aplicam-se aos artigos recรฉm-obtidos: todos os artigos โ grupo โ fonte. Sรฃo executadas de cima para baixo; as aรงรตes posteriores tรชm prioridade. Arraste para reordenar. Os testes incluem regras de destinos mais abrangentes.",
"test": "Testar regras",
"searchField": "Campo de pesquisa",
"matchCondition": "Condiรงรฃo de correspondรชncia",
"save": "Guardar regra",
"selectAll": "Selecionar todas as regras",
"selectRule": "Selecionar regra",
"saveError": "Nรฃo foi possรญvel guardar as regras. Tente novamente."
},
"service": {
"intro": "Sincronizaรงรฃo entre dispositivos com serviรงos RSS.",
"select": "Selecione um serviรงo",
"suggest": "Sugerir um novo serviรงo",
"overwriteWarning": "Fontes locais serรฃo eliminadas se elas existirem no serviรงo.",
"groupsWarning": "Grupos nรฃo sรฃo automaticamente sincronizados com o serviรงo.",
"rateLimitWarning": "Para evitar limitaรงรตes do serviรงo, vocรช precisa criar sua prรณpria chave de API.",
"removeAd": "Remover Anuncio",
"endpoint": "Endpoint",
"username": "Utilizador",
"password": "Password",
"unchanged": "Inalterado",
"fetchLimit": "Limite de sincronizaรงรฃo",
"fetchLimitNum": "{count} รบltimos artigos",
"importGroups": "Importar grupos",
"failure": "Nรฃo foi possรญvel conectar ao serviรงo",
"failureHint": "Por favor verifique a configuraรงรฃo do serviรงo ou o estado da rede.",
"fetchUnlimited": "Ilimitado (nรฃo recomendado)",
"exportToLite": "Exportar para o Fluent Reader Lite"
},
"app": {
"cleanup": "Limpar",
"cache": "Limpar cache",
"cacheSize": "{size} de dados em cache",
"deleteChoices": "Eliminar artigos de ... dias atrรกs",
"confirmDelete": "Eliminar",
"daysAgo": "{days, plural, =1 {# dia} other {# dias}} atrรกs",
"deleteAll": "Eliminar todos os artigos",
"calculatingSize": "Calculando tamanho...",
"itemSize": "Cerca de {size} do armazenamento local รฉ ocupado por artigos",
"confirmImport": "Do you really want to import data from the backup file? All current data will be wiped.",
"data": "Dados da aplicaรงรฃo",
"backup": "Backup",
"restore": "Restorar",
"frData": "Dados do Fluent Reader",
"language": "Idioma",
"theme": "Tema",
"lightTheme": "Modo claro",
"darkTheme": "Modo escuro",
"enableProxy": "Ativar proxy",
"badUrl": "URL invรกlida",
"pac": "Endereรงo PAC",
"setPac": "Definir PAC",
"pacHint": "Para proxies Socks, รฉ recomendado para o PAC retornar "SOCKS5" para o proxy-side DNS. Desligar o proxy requer um reinicio.",
"fetchInterval": "Intervalo de atualizaรงรฃo automรกtica",
"never": "Nunca"
}
}
File: src/scripts/i18n/ru.json
{
"allArticles": "ะัะต ััะฐััะธ",
"add": "ะะพะฑะฐะฒะธัั",
"create": "ะกะพะทะดะฐัั",
"icon": "ะะบะพะฝะบะฐ",
"name": "ะะฐะทะฒะฐะฝะธะต",
"openExternal": "ะัะบัััั ะฒะฝะตัะฝะตะน ะฟัะพะณัะฐะผะผะพะน",
"emptyName": "ะญัะพ ะฟะพะปะต ะฝะต ะผะพะถะตั ะฑััั ะฟััััะผ.",
"emptyField": "ะญัะพ ะฟะพะปะต ะฝะต ะผะพะถะตั ะฑััั ะฟััััะผ.",
"edit": "ะ ะตะดะฐะบัะธัะพะฒะฐัั",
"delete": "ะฃะดะฐะปะธัั",
"followSystem": "ะะฐะบ ะฒ ัะธััะตะผะต",
"more": "ะัั",
"close": "ะะฐะบัััั",
"search": "ะะพะธัะบ",
"loadMore": "ะะฐะณััะทะธัั ะตัั",
"dangerButton": "ะะพะดัะฒะตัะดะธัั {action}?",
"confirmMarkAll": "ะั ะดะตะนััะฒะธัะตะปัะฝะพ ั
ะพัะธัะต ะพัะผะตัะธัั ะฒัะต ััะฐััะธ ะฝะฐ ััะพะน ัััะฐะฝะธัะต ะฟัะพัะธัะฐะฝะฝัะผะธ?",
"confirm": "ะะพะดัะฒะตัะดะธัั",
"cancel": "ะัะผะตะฝะฐ",
"default": "ะะพ ัะผะพะปัะฐะฝะธั",
"time": {
"now": "ัะตะนัะฐั",
"m": "ะผ",
"h": "ั",
"d": "ะด",
"minute": "{m, plural, =1 {# ะผะธะฝััะฐ} other {# ะผะธะฝัั}}",
"hour": "{h, plural, =1 {# ัะฐั} other {# ัะฐัะพะฒ}}",
"day": "{d, plural, =1 {# ะดะตะฝั} other {# ะดะฝะตะน}}"
},
"log": {
"empty": "ะะตั ัะฒะตะดะพะผะปะตะฝะธะน",
"fetchFailure": "ะะต ัะดะฐะปะพัั ะทะฐะณััะทะธัั ะธะท ะธััะพัะฝะธะบะฐ "{name}".",
"fetchSuccess": "ะฃัะฟะตัะฝะพ {count, plural, =1 {ะฟะพะปััะตะฝะฐ # ััะฐััั} other {ะฟะพะปััะตะฝั # ััะฐัะตะน}}.",
"networkError": "ะัะธะฑะบะฐ ัะตัะธ.",
"parseError": "ะะพะทะฝะธะบะปะฐ ะพัะธะฑะบะฐ ะฟัะธ ัะฐะทะฑะพัะต XML.",
"syncFailure": "ะะต ัะดะฐะปะพัั ัะธะฝั
ัะพะฝะธะทะธัะพะฒะฐัั ั ัะตัะฒะธัะพะผ"
},
"nav": {
"menu": "ะะตะฝั",
"refresh": "ะะฑะฝะพะฒะธัั",
"markAllRead": "ะัะผะตัะธัั ะฒัั ะฟัะพัะธัะฐะฝะฝัะผ",
"notifications": "ะฃะฒะตะดะพะผะปะตะฝะธั",
"view": "ะะธะด",
"settings": "ะะฐัััะพะนะบะธ",
"minimize": "ะกะฒะตัะฝััั",
"maximize": "ะ ะฐะทะฒะตัะฝััั"
},
"menu": {
"close": "ะะฐะบัััั ะผะตะฝั",
"subscriptions": "ะะพะดะฟะธัะบะธ"
},
"article": {
"error": "ะะต ัะดะฐะปะพัั ะทะฐะณััะทะธัั ััะฐััั.",
"reload": "ะะตัะตะทะฐะณััะทะธัั?",
"empty": "ะะตั ััะฐัะตะน",
"untitled": "(ะะตะท ะฝะฐะทะฒะฐะฝะธั)",
"hide": "ะกะฟัััะฐัั ััะฐััั",
"unhide": "ะะพะบะฐะทะฐัั ััะฐััั",
"markRead": "ะัะผะตัะธัั ะบะฐะบ ะฟัะพัะธัะฐะฝะฝะพะต",
"markUnread": "ะัะผะตัะธัั ะบะฐะบ ะฝะตะฟัะพัะธัะฐะฝะฝะพะต",
"markAbove": "ะัะผะตัะธัั ะฒััะต ะบะฐะบ ะฟัะพัะธัะฐะฝะฝะพะต",
"markBelow": "ะัะผะตัะธัั ะฝะธะถะต ะบะฐะบ ะฟัะพัะธัะฐะฝะฝะพะต",
"star": "ะ ะธะทะฑัะฐะฝะฝะพะต",
"unstar": "ะฃะฑัะฐัั ะธะท ะธะทะฑัะฐะฝะฝะพะณะพ",
"fontSize": "ะ ะฐะทะผะตั ััะธััะฐ",
"loadWebpage": "ะะฐะณััะทะธัั ะฒะตะฑ-ัััะฐะฝะธัั",
"loadFull": "ะะฐะณััะทะธัั ะฟะพะปะฝะพะต ัะพะดะตัะถะธะผะพะต",
"notify": "ะฃะฒะตะดะพะผะธัั, ะตัะปะธ ะฟะพะปััะตะฝะพ ะฒ ัะพะฝะพะฒะพะผ ัะตะถะธะผะต",
"dontNotify": "ะะต ัะฒะตะดะพะผะปััั",
"textDir": "ะะฐะฟัะฐะฒะปะตะฝะธะต ัะตะบััะฐ",
"LTR": "ะกะปะตะฒะฐ ะฝะฐะฟัะฐะฒะพ",
"RTL": "ะกะฟัะฐะฒะฐ ะฝะฐะปะตะฒะพ",
"Vertical": "ะะตััะธะบะฐะปัะฝะพ",
"font": "ะจัะธัั"
},
"context": {
"share": "ะะพะดะตะปะธัััั",
"read": "ะงะธัะฐัั",
"copyTitle": "ะะพะฟะธัะพะฒะฐัั ะทะฐะณะพะปะพะฒะพะบ",
"copyURL": "ะะพะฟะธัะพะฒะฐัั ัััะปะบั",
"copy": "ะะพะฟะธัะพะฒะฐัั",
"search": "ะัะบะฐัั "{text}" ะฒ {engine}",
"view": "ะะธะด",
"cardView": "ะะฐััะพัะบะธ",
"listView": "ะกะฟะธัะพะบ",
"magazineView": "ะััะฝะฐะป",
"compactView": "ะะพะผะฟะฐะบัะฝัะน",
"filter": "ะคะธะปัััั",
"unreadOnly": "ะขะพะปัะบะพ ะฝะตะฟัะพัะธัะฐะฝะฝัะต",
"starredOnly": "ะขะพะปัะบะพ ะธะทะฑัะฐะฝะฝัะต",
"fullSearch": "ะะพะธัะบ ะฟะพ ะฒัะตะผั ัะตะบััั",
"showHidden": "ะะพะบะฐะทัะฒะฐัั ัะบััััะต",
"manageSources": "ะฃะฟัะฐะฒะปะตะฝะธะต ะธััะพัะฝะธะบะฐะผะธ",
"saveImageAs": "ะกะพั
ัะฐะฝะธัั ะธะทะพะฑัะฐะถะตะฝะธะต ะบะฐะบ โฆ",
"copyImage": "ะะพะฟะธัะพะฒะฐัั ะธะทะพะฑัะฐะถะตะฝะธะต",
"copyImageURL": "ะะพะฟะธัะพะฒะฐัั ัััะปะบั ะฝะฐ ะธะทะพะฑัะฐะถะตะฝะธะต",
"caseSensitive": "ะก ััััะพะผ ัะตะณะธัััะฐ",
"showCover": "ะะพะบะฐะทะฐัั ะพะฑะปะพะถะบั",
"showSnippet": "ะะพะบะฐะทะฐัั ะพัััะฒะพะบ",
"fadeRead": "ะััะฒะตัะปััั ะฟัะพัะธัะฐะฝะฝัะต ััะฐััะธ"
},
"searchEngine": {
"name": "ะะพะธัะบะพะฒะฐั ัะธััะตะผะฐ",
"google": "Google",
"bing": "Bing",
"baidu": "Baidu",
"duckduckgo": "DuckDuckGo"
},
"settings": {
"writeError": "ะัะพะธะทะพัะปะฐ ะพัะธะฑะบะฐ ะฟัะธ ะทะฐะฟะธัะธ ัะฐะนะปะฐ.",
"name": "ะะฐัััะพะนะบะธ",
"fetching": "ะะฑะฝะพะฒะปะตะฝะธะต ะธััะพัะฝะธะบะพะฒ. ะะพะถะฐะปัะนััะฐ, ะฟะพะดะพะถะดะธัะต.",
"exit": "ะัะนัะธ ะธะท ะฝะฐัััะพะตะบ",
"sources": "ะััะพัะฝะธะบะธ",
"grouping": "ะััะฟะฟั",
"rules": "ะัะฐะฒะธะปะฐ",
"service": "ะกะตัะฒะธัั",
"app": "ะัะตะดะฟะพััะตะฝะธั",
"about": "ะ ะฟัะพะณัะฐะผะผะต",
"version": "ะะตััะธั",
"shortcuts": "ะกะพัะตัะฐะฝะธั ะบะปะฐะฒะธั",
"openSource": "ะัะบััััะน ะธัั
ะพะดะฝัะน ะบะพะด",
"feedback": "ะะฑัะฐัะฝะฐั ัะฒัะทั"
},
"sources": {
"serviceWarning": "ะะผะฟะพััะธัะพะฒะฐะฝะฝัะต ะธะปะธ ะดะพะฑะฐะฒะปะตะฝะฝัะต ะทะดะตัั ะธััะพัะฝะธะบะธ ะฝะต ะฑัะดัั ัะธะฝั
ัะพะฝะธะทะธัะพะฒะฐะฝั ั ะะฐัะธะผ ัะตัะฒะธัะพะผ.",
"serviceManaged": "ะญัะพั ะธััะพัะฝะธะบ ัะฟัะฐะฒะปัะตััั ะะฐัะธะผ ัะตัะฒะธัะพะผ.",
"untitled": "ะััะพัะฝะธะบ",
"errorAdd": "ะะพะทะฝะธะบะปะฐ ะพัะธะฑะบะฐ ะฟัะธ ะดะพะฑะฐะฒะปะตะฝะธะธ ะธััะพัะฝะธะบะฐ.",
"errorParse": "ะะพะทะฝะธะบะปะฐ ะพัะธะฑะบะฐ ะฟัะธ ัะฐะทะฑะพัะต OPML ัะฐะนะปะฐ.",
"errorParseHint": "ะะพะถะฐะปัะนััะฐ, ัะดะพััะพะฒะตัััะตัั ััะพ ัะฐะนะป ะฝะต ะฟะพะฒัะตะถะดัะฝ ะธ ะธัะฟะพะปัะทัะตั ะบะพะดะธัะพะฒะบั UTF-8.",
"errorImport": "ะัะธะฑะบะฐ ะธะผะฟะพััะฐ {count, plural, =1 {# ะธััะพัะฝะธะบะฐ} other {# ะธััะพัะฝะธะบะพะฒ}}.",
"exist": "ะญัะพั ะธััะพัะฝะธะบ ัะถะต ัััะตััะฒัะตั.",
"opmlFile": "OPML ัะฐะนะป",
"name": "ะะฐะทะฒะฐะฝะธะต ะธััะพัะฝะธะบะฐ",
"editName": "ะะทะผะตะฝะธัั ะฝะฐะทะฒะฐะฝะธะต",
"fetchFrequency": "ะะณัะฐะฝะธัะตะฝะธะต ัะฐััะพัั ะพะฑะฝะพะฒะปะตะฝะธะน",
"unlimited": "ะะตะท ะพะณัะฐะฝะธัะตะฝะธะน",
"openTarget": "ะะตัะพะด ะพัะบัััะธั ััะฐัะตะน ะฟะพ ัะผะพะปัะฐะฝะธั",
"delete": "ะฃะดะฐะปะธัั ะธััะพัะฝะธะบ",
"add": "ะะพะฑะฐะฒะธัั ะธััะพัะฝะธะบ",
"import": "ะะผะฟะพัั",
"export": "ะญะบัะฟะพัั",
"rssText": "ะะพะปะฝัะน ัะตะบัั RSS",
"loadWebpage": "ะะฐะณััะทะธัั ะฒะตะฑ-ัััะฐะฝะธัั",
"inputUrl": "ะะฒะตะดะธัะต URL",
"badIcon": "ะะตะดะพะฟัััะธะผะฐั ะธะบะพะฝะบะฐ",
"badUrl": "ะะตะดะพะฟัััะธะผัะน URL",
"deleteWarning": "ะััะพัะฝะธะบ ะธ ะฒัะต ัะพั
ัะฐะฝัะฝะฝัะต ััะฐััะธ ะฑัะดัั ัะดะฐะปะตะฝั.",
"selected": "ะัะฑะตัะธัะต ะธััะพัะฝะธะบ",
"selectedMulti": "ะัะฑะตัะธัะต ะฝะตัะบะพะปัะบะพ ะธััะพัะฝะธะบะพะฒ"
},
"groups": {
"exist": "ะญัะฐ ะณััะฟะฟะฐ ัะถะต ัััะตััะฒัะตั.",
"type": "ะขะธะฟ",
"group": "ะััะฟะฟะฐ",
"source": "ะััะพัะฝะธะบ",
"capacity": "ะะผะบะพััั",
"exitGroup": "ะะฐะทะฐะด ะบ ะณััะฟะฟะฐะผ",
"deleteSource": "ะฃะดะฐะปะธัั ะธะท ะณััะฟะฟั",
"sourceHint": "ะะตัะตัะฐัะบะธะฒะฐะนัะต ะธััะพัะฝะธะบะธ ะดะปั ะธะทะผะตะฝะตะฝะธั ะฟะพััะดะบะฐ.",
"selectAllSources": "ะัะฑัะฐัั ะฒัะต ะธััะพัะฝะธะบะธ",
"create": "ะกะพะทะดะฐัั ะณััะฟะฟั",
"selectedGroup": "ะัะฑัะฐะฝะฝะฐั ะณััะฟะฟะฐ",
"selectedSource": "ะัะฑัะฐะฝะฝัะน ะธััะพัะฝะธะบ",
"enterName": "ะะฒะตะดะธัะต ะฝะฐะทะฒะฐะฝะธะต",
"editName": "ะะทะผะตะฝะธัั ะฝะฐะทะฒะฐะฝะธะต",
"editGroup": "ะะทะผะตะฝะธัั ะณััะฟะฟั",
"deleteGroup": "ะฃะดะฐะปะธัั ะณััะฟะฟั",
"chooseGroup": "ะัะฑัะฐัั ะณััะฟะฟั",
"addToGroup": "ะะพะฑะฐะฒะธัั ะฒ โฆ",
"groupHint": "ะกะดะตะปะฐะนัะต ะดะฒะพะนะฝะพะน ัะตะปัะพะบ ะฟะพ ะณััะฟะฟะต ะดะปั ัะตะดะฐะบัะธัะพะฒะฐะฝะธั ะธััะพัะฝะธะบะพะฒ. ะะตัะตัะฐัะบะธะฒะฐะนัะต ะดะปั ะธะทะผะตะฝะตะฝะธั ะฟะพััะดะบะฐ."
},
"rules": {
"intro": "ะะฒัะพะผะฐัะธัะตัะบะธ ะพัะผะตัะฐัั ััะฐััะธ ะธะปะธ ะพัะฟัะฐะฒะปััั ัะฒะตะดะพะผะปะตะฝะธั ั ะฟะพะผะพััั ัะตะณัะปััะฝัั
ะฒััะฐะถะตะฝะธะน.",
"help": "ะฃะทะฝะฐัั ะฑะพะปััะต",
"target": "ะฆะตะปั",
"selectTarget": "ะัะฑะตัะธัะต ัะตะปั",
"new": "ะะพะฒะพะต ะฟัะฐะฒะธะปะพ",
"title": "ะะฐะทะฒะฐะฝะธะต",
"content": "ะกะพะดะตัะถะธะผะพะต",
"fullSearch": "ะะฐะทะฒะฐะฝะธะต ะธะปะธ ัะพะดะตัะถะธะผะพะต",
"creator": "ะะฒัะพั",
"match": "ัะพะฒะฟะฐะดะฐะตั",
"notMatch": "ะฝะต ัะพะฒะฟะฐะดะฐะตั",
"regex": "ะ ะตะณัะปััะฝะพะต ะฒััะฐะถะตะฝะธะต",
"badRegex": "ะะตะดะพะฟัััะธะผะพะต ัะตะณัะปััะฝะพะต ะฒััะฐะถะตะฝะธะต.",
"action": "ะะตะนััะฒะธั",
"selectAction": "ะัะฑะตัะธัะต ะดะตะนััะฒะธั",
"hint": "ะัะฐะฒะธะปะฐ ะฟัะธะผะตะฝััััั ะบ ะฝะพะฒัะผ ะทะฐะณััะถะตะฝะฝัะผ ััะฐัััะผ: ะฒัะต ััะฐััะธ โ ะณััะฟะฟะฐ โ ะธััะพัะฝะธะบ. ะะฝะธ ะฒัะฟะพะปะฝััััั ัะฒะตัั
ั ะฒะฝะธะท; ะฟะพัะปะตะดัััะธะต ะดะตะนััะฒะธั ะธะผะตัั ะฟัะธะพัะธัะตั. ะะตัะตัะฐัะธัะต ะดะปั ะธะทะผะตะฝะตะฝะธั ะฟะพััะดะบะฐ. ะัะพะฒะตัะบะฐ ะฒะบะปััะฐะตั ะฟัะฐะฒะธะปะฐ ะฑะพะปะตะต ัะธัะพะบะธั
ัะตะปะตะน.",
"test": "ะัะพะฒะตัะธัั ะฟัะฐะฒะธะปะฐ",
"searchField": "ะะพะปะต ะฟะพะธัะบะฐ",
"matchCondition": "ะฃัะปะพะฒะธะต ัะพะฒะฟะฐะดะตะฝะธั",
"save": "ะกะพั
ัะฐะฝะธัั ะฟัะฐะฒะธะปะพ",
"selectAll": "ะัะฑัะฐัั ะฒัะต ะฟัะฐะฒะธะปะฐ",
"selectRule": "ะัะฑัะฐัั ะฟัะฐะฒะธะปะพ",
"saveError": "ะะต ัะดะฐะปะพัั ัะพั
ัะฐะฝะธัั ะฟัะฐะฒะธะปะฐ. ะะพะฒัะพัะธัะต ะฟะพะฟััะบั."
},
"service": {
"intro": "ะกะธะฝั
ัะพะฝะธะทะฐัะธั ะผะตะถะดั ััััะพะนััะฒะฐะผะธ ั ะฟะพะผะพััั RSS ัะตัะฒะธัะพะฒ.",
"select": "ะัะฑะตัะธัะต ัะตัะฒะธั",
"suggest": "ะัะตะดะปะพะถะธัั ะฝะพะฒัะน ัะตัะฒะธั",
"overwriteWarning": "ะะพะบะฐะปัะฝัะต ะธััะพัะฝะธะบะธ ะฑัะดัั ัะดะฐะปะตะฝั ะตัะปะธ ะพะฝะธ ัััะตััะฒััั ะฒ ัะตัะฒะธัะต.",
"groupsWarning": "ะััะฟะฟั ะฝะต ัะธะฝั
ัะพะฝะธะทะธัััััั ะฐะฒัะพะผะฐัะธัะตัะบะธ ัะตัะตะท ัะตัะฒะธั.",
"rateLimitWarning": "ะงัะพะฑั ะธะทะฑะตะถะฐัั ะพะณัะฐะฝะธัะตะฝะธั ัะฐััะพัั ะทะฐะฟัะพัะพะฒ, ะะฐะผ ะฝัะถะฝะพ ัะพะทะดะฐัั ัะฒะพะน ะบะปัั API.",
"removeAd": "ะฃะฑัะฐัั ัะตะบะปะฐะผั",
"endpoint": "Endpoint",
"username": "ะะผั ะฟะพะปัะทะพะฒะฐัะตะปั",
"password": "ะะฐัะพะปั",
"unchanged": "ะะตะท ะธะทะผะตะฝะตะฝะธะน",
"fetchLimit": "ะะณัะฐะฝะธัะตะฝะธะต ัะธะฝั
ัะพะฝะธะทะฐัะธะธ",
"fetchLimitNum": "{count, plural, =1 {# ะฟะพัะปะตะดะฝัั ััะฐััั} other {# ะฟะพัะปะตะดะฝะธั
ััะฐัะตะน}}",
"importGroups": "ะะผะฟะพััะธัะพะฒะฐัั ะณััะฟะฟั",
"failure": "ะะตั ะฟะพะดะบะปััะตะฝะธั ะบ ัะตัะฒะธัั",
"failureHint": "Please check the service configuration or network status.",
"fetchUnlimited": "ะะตะท ะพะณัะฐะฝะธัะตะฝะธะน (ะฝะต ัะตะบะพะผะตะฝะดัะตััั)",
"exportToLite": "ะญะบัะฟะพัั ะฒ Fluent Reader Lite"
},
"app": {
"cleanup": "ะัะธััะบะฐ",
"cache": "ะัะธััะธัั ะบัั",
"cacheSize": "ะะฐะบััะธัะพะฒะฐะฝะพ {size} ะดะฐะฝะฝัั
",
"deleteChoices": "ะฃะดะฐะปะธัั ััะฐััะธ ััะฐััะต โฆ ะดะฝะตะน",
"confirmDelete": "ะฃะดะฐะปะธัั",
"daysAgo": "{days, plural, =1 {# ะดะฝั} other {# ะดะฝะตะน}} ะฝะฐะทะฐะด",
"deleteAll": "ะฃะดะฐะปะธัั ะฒัะต ััะฐััะธ",
"calculatingSize": "ะััะธัะปะตะฝะธะต ัะฐะทะผะตัะฐโฆ",
"itemSize": "ะกัะฐัััะผะธ ะทะฐะฝััะพ ะฟัะธะผะตัะฝะพ {size} ะฟัะพัััะฐะฝััะฒะฐ ะปะพะบะฐะปัะฝะพะณะพ ั
ัะฐะฝะธะปะธัะฐ",
"confirmImport": "ะั ะดะตะนััะฒะธัะตะปัะฝะพ ั
ะพัะธัะต ะธะผะฟะพััะธัะพะฒะฐัั ะดะฐะฝะฝัะต ะธะท ัะฐะนะปะฐ ัะตะทะตัะฒะฝะพะน ะบะพะฟะธะธ? ะัะต ัะตะบััะธะต ะดะฐะฝะฝัะต ะฑัะดัั ัะดะฐะปะตะฝั.",
"data": "ะะฐะฝะฝัะต ะฟัะธะปะพะถะตะฝะธั",
"backup": "ะ ะตะทะตัะฒะฝะฐั ะบะพะฟะธั",
"restore": "ะะพัััะฐะฝะพะฒะปะตะฝะธะต",
"frData": "ะะฐะฝะฝัะต Fluent Reader",
"language": "ะฏะทัะบ ะธะฝัะตััะตะนัะฐ",
"theme": "ะขะตะผะฐ",
"lightTheme": "ะกะฒะตัะปะฐั",
"darkTheme": "ะขัะผะฝะฐั",
"enableProxy": "ะะบะปััะธัั ะฟัะพะบัะธ",
"badUrl": "ะะตะดะพะฟัััะธะผัะน URL",
"pac": "PAC ะะดัะตั",
"setPac": "ะฃััะฐะฝะพะฒะธัั PAC",
"pacHint": "ะะปั Socks ะฟัะพะบัะธ ัะตะบะพะผะตะฝะดัะตััั, ััะพะฑั PAC ะฒะพะทะฒัะฐัะฐะป "SOCKS5" ะดะปั DNS ะฝะฐ ััะพัะพะฝะต ะฟัะพะบัะธ. ะัะบะปััะตะฝะธะต ะฟัะพะบัะธ ััะตะฑัะตั ะฟะตัะตะทะฐะฟััะบะฐ.",
"fetchInterval": "ะะฝัะตัะฒะฐะป ะฐะฒัะพะผะฐัะธัะตัะบะพะณะพ ะพะฑะฝะพะฒะปะตะฝะธั",
"never": "ะะธะบะพะณะดะฐ"
}
}
File: src/scripts/i18n/sv.json
{
"allArticles": "Alla artiklar",
"add": "Lรคgg till",
"create": "Skapa",
"icon": "Ikon",
"name": "Namn",
"openExternal": "รppna externt",
"emptyName": "Detta fรคlt kan inte vara tomt.",
"emptyField": "Detta fรคlt kan inte vara tomt.",
"edit": "Redigera",
"delete": "Ta bort",
"followSystem": "Fรถlj systemet",
"more": "Mer",
"close": "Stรคng",
"search": "Sรถk",
"loadMore": "Lรคs in mer",
"dangerButton": "Bekrรคfta {action}?",
"confirmMarkAll": "Vill du verkligen markera alla artiklar pรฅ denna sida som lรคsta?",
"confirm": "Bekrรคfta",
"cancel": "Avbryt",
"time": {
"now": "nu",
"m": "m",
"h": "t",
"d": "d",
"minute": "{m, plural, =1 {# minut} other {# minuter}}",
"hour": "{h, plural, =1 {# timma} other {# timmar}}",
"day": "{d, plural, =1 {# dag} other {# dagar}}"
},
"log": {
"empty": "Ingen avisering",
"fetchFailure": "Kunde inte lรคsa in kรคllan "{name}".",
"fetchSuccess": "Lyckades hรคmta {count, plural, =1 {# artikel} other {# artiklar}}.",
"networkError": "Ett nรคtverksfel uppstod.",
"parseError": "Ett fel uppstod vid tolkning av XML-flรถdet.",
"syncFailure": "Kunde inte synkronisera med tjรคnsten"
},
"nav": {
"menu": "Meny",
"refresh": "Uppdatera",
"markAllRead": "Markera alla som lรคsta",
"notifications": "Aviseringar",
"view": "Visa",
"settings": "Instรคllningar",
"minimize": "Minimera",
"maximize": "Maximera"
},
"menu": {
"close": "Stรคng menyn",
"subscriptions": "Prenumerationer"
},
"article": {
"error": "Kunde inte lรคsa in artikeln.",
"reload": "Vill du lรคsa in igen?",
"empty": "Inga artiklar",
"untitled": "(Namnlรถs)",
"hide": "Dรถlj artikel",
"unhide": "Visa artikel",
"markRead": "Markera som lรคst",
"markUnread": "Markera som olรคst",
"markAbove": "Markera ovanstรฅende som lรคst",
"markBelow": "Markera nedanstรฅende som lรคst",
"star": "Stjรคrna",
"unstar": "Ta bort stjรคrna",
"fontSize": "Teckenstorlek",
"loadWebpage": "Lรคs in webbsidan",
"loadFull": "Lรคs in fullstรคndigt innehรฅll",
"notify": "Avisera om hรคmtat i bakgrunden",
"dontNotify": "Avisera inte"
},
"context": {
"share": "Dela",
"read": "Lรคs",
"copyTitle": "Kopiera titel",
"copyURL": "Kopiera lรคnk",
"copy": "Kopiera",
"search": "Sรถk "{text}" pรฅ {engine}",
"view": "Visa",
"cardView": "Kortvy",
"listView": "Listvy",
"magazineView": "Tidningsvy",
"compactView": "Kompakt vy",
"filter": "Filtrering",
"unreadOnly": "Endast olรคst",
"starredOnly": "Endast stjรคrnmรคrkt",
"fullSearch": "Sรถk i hela texten",
"showHidden": "Visa dolda artiklar",
"manageSources": "Hantera kรคllor",
"saveImageAs": "Spara bild som โฆ",
"copyImage": "Kopiera bild",
"copyImageURL": "Kopiera bildlรคnk",
"caseSensitive": "Skiftlรคgeskรคnslig",
"showCover": "Visa omslag",
"showSnippet": "Visa utdrag",
"fadeRead": "Tona lรคsta artiklar"
},
"searchEngine": {
"name": "Sรถkmotor",
"google": "Google",
"bing": "Bing",
"baidu": "Baidu",
"duckduckgo": "DuckDuckGo"
},
"settings": {
"writeError": "Ett fel uppstod vid skrivning av filen.",
"name": "Instรคllningar",
"fetching": "Uppdaterar kรคllor, vรคnta โฆ",
"exit": "Stรคng instรคllningar",
"sources": "Kรคllor",
"grouping": "Grupper",
"rules": "Regler",
"service": "Tjรคnst",
"app": "Instรคllningar",
"about": "Om",
"version": "Version",
"shortcuts": "Genvรคgar",
"openSource": "Open source",
"feedback": "ร
terkoppling"
},
"sources": {
"serviceWarning": "Kรคllor tillagda eller importerade hรคr, kommer inte att synkroniseras med din tjรคnst.",
"serviceManaged": "Denna kรคlla hanteras av din tjรคnst.",
"untitled": "Kรคlla",
"errorAdd": "Ett fel uppstod dรฅ kรคllan lades till.",
"errorParse": "Ett fel uppstod vid tolkning av OPML-filen.",
"errorParseHint": "Tillse att filen inte รคr skadad och รคr kodad med UTF-8.",
"errorImport": "Fel vid import av {count, plural, =1 {# kรคlla} other {# kรคllor}}.",
"exist": "Denna kรคlla finns redan.",
"opmlFile": "OPML-fil",
"name": "Kรคllnamn",
"editName": "Redigera namn",
"fetchFrequency": "Hรคmta frekvensbegrรคnsning",
"unlimited": "Obegrรคnsad",
"openTarget": "Standard รถppet mรฅl fรถr artiklar",
"delete": "Ta bort kรคlla",
"add": "Lรคgg till kรคlla",
"import": "Importera",
"export": "Exportera",
"rssText": "RSS fulltext",
"loadWebpage": "Lรคs in webbsidaq",
"inputUrl": "Ange URL",
"badIcon": "Ogiltig ikon",
"badUrl": "Ogiltig URL",
"deleteWarning": "Kรคllan och alla sparade artiklar kommer att tas bort.",
"selected": "Valde kรคlla",
"selectedMulti": "Valde flera kรคllor"
},
"groups": {
"exist": "Denna grupp finns redan.",
"type": "Typ",
"group": "Grupp",
"source": "Kรคlla",
"capacity": "Kapacitet",
"exitGroup": "Tillbaka till grupper",
"deleteSource": "Ta bort frรฅn gruppen",
"sourceHint": "Dra och slรคpp kรคllor fรถr att sortera.",
"selectAllSources": "Vรคlj alla kรคllor",
"create": "Skapa grupp",
"selectedGroup": "Valde grupp",
"selectedSource": "Valde kรคlla",
"enterName": "Ange namn",
"editName": "Redigera namn",
"editGroup": "Redigera grupp",
"deleteGroup": "Ta bort grupp",
"chooseGroup": "Vรคlj en grupp",
"addToGroup": "Lรคgg till i ...",
"groupHint": "Dubbelklicka pรฅ en grupp fรถr att redigera kรคllor. Dra och slรคpp fรถr att sortera."
},
"rules": {
"intro": "Markera artiklar automatiskt eller avisera med regular expressions.",
"help": "Lรคs mer",
"target": "Mรฅl",
"selectTarget": "Vรคlj ett mรฅl",
"new": "Ny regel",
"title": "Titel",
"content": "Innehรฅll",
"fullSearch": "Titel eller innehรฅll",
"creator": "Fรถrfattare",
"match": "matchar",
"notMatch": "matchar inte",
"regex": "Regular expression",
"badRegex": "Ogiltigt regular expression.",
"action": "ร
tgรคrder",
"selectAction": "Vรคlj รฅtgรคrder",
"hint": "Regler gรคller fรถr nyligen hรคmtade artiklar: alla artiklar โ grupp โ kรคlla. De kรถrs uppifrรฅn och ned; senare รฅtgรคrder har fรถretrรคde. Dra fรถr att รคndra ordningen. Tester inkluderar regler fรถr bredare mรฅl.",
"test": "Testa regler",
"searchField": "Sรถkfรคlt",
"matchCondition": "Matchningsvillkor",
"save": "Spara regel",
"selectAll": "Vรคlj alla regler",
"selectRule": "Vรคlj regel",
"saveError": "Det gick inte att spara reglerna. Fรถrsรถk igen."
},
"service": {
"intro": "Synkronisera mellan enheter med RSS-tjรคnster.",
"select": "Vรคlj en tjรคnst",
"suggest": "Fรถreslรฅ en ny tjรคnst",
"overwriteWarning": "Lokala kรคllor tas bort, om de finns i tjรคnsten.",
"groupsWarning": "Grupper synkroniseras inte automatiskt med tjรคnsten.",
"rateLimitWarning": "Fรถr att undvika frekvensbegrรคnsning mรฅste du skapa din egen API-nyckel.",
"removeAd": "Ta bort annons",
"endpoint": "Slutpunkt",
"username": "Anvรคndarnamn",
"password": "Lรถsenord",
"unchanged": "Ofรถrรคndrad",
"fetchLimit": "Synkroniseringsgrรคns",
"fetchLimitNum": "{count} senaste artiklar",
"importGroups": "Importera grupper",
"failure": "Kan inte ansluta till tjรคnsten",
"failureHint": "Kontrollera tjรคnstkonfigurationen eller nรคtverksstatus.",
"fetchUnlimited": "Obegrรคnsat (rekommenderas ej)",
"exportToLite": "Exportera till Fluent Reader Lite"
},
"app": {
"cleanup": "Rensa",
"cache": "Rensa cache",
"cacheSize": "Cache-lagra {size} data",
"deleteChoices": "Ta bort artiklar frรฅn ... dagar sedan",
"confirmDelete": "Ta bort",
"daysAgo": "{days, plural, =1 {# dag} other {# dagar}} sedan",
"deleteAll": "Ta bort alla artiklar",
"calculatingSize": "Berรคknar storlek...",
"itemSize": "Omkring {size} lokal datalagring upptas av artiklar",
"confirmImport": "Vill du verkligen importera data frรฅn sรคkerhetskopian? All aktuell data kommer att raderas.",
"data": "Applikationsdata",
"backup": "Sรคkerhetskopier",
"restore": "ร
terstรคll",
"frData": "Fluent Reader Data",
"language": "Skรคrmsprรฅk",
"theme": "Tema",
"lightTheme": "Ljust lรคge",
"darkTheme": "Mรถrkt lรคge",
"enableProxy": "Aktivera proxy",
"badUrl": "Ogiltig URL",
"pac": "PAC-adress",
"setPac": "Ange PAC",
"pacHint": "Fรถr Socks-proxyservrar rekommenderas att PAC returnerar "SOCKS5" fรถr DNS pรฅ proxysidan. Om du stรคnger av proxyn krรคvs omstart.",
"fetchInterval": "Automatiskt hรคmtningsintervall",
"never": "Aldrig"
}
}
File: src/scripts/i18n/tr.json
[Binary file]
File: src/scripts/i18n/uk.json
[Binary file]
File: src/scripts/i18n/zh-CN.json
{
"allArticles": "ๅ
จ้จๆ็ซ ",
"add": "ๆทปๅ ",
"create": "ๆฐๅปบ",
"icon": "ๅพๆ ",
"name": "ๅ็งฐ",
"openExternal": "ๅจๆต่งๅจไธญๆๅผ",
"emptyName": "ๅ็งฐไธๅพไธบ็ฉบ",
"emptyField": "ๆญค้กนไธๅพไธบ็ฉบ",
"edit": "็ผ่พ",
"delete": "ๅ ้ค",
"followSystem": "่ท้็ณป็ป",
"more": "ๆดๅค",
"close": "ๅ
ณ้ญ",
"search": "ๆ็ดข",
"loadMore": "ๅ ่ฝฝๆดๅค",
"dangerButton": "็กฎ่ฎค{action}๏ผ",
"confirmMarkAll": "็กฎ่ฎคๅฐๆฌ้กตๆๆๆ็ซ ๆ ไธบๅทฒ่ฏป๏ผ",
"confirm": "็กฎ่ฎค",
"cancel": "ๅๆถ",
"default": "้ป่ฎค",
"time": {
"now": "now",
"m": "m",
"h": "h",
"d": "d",
"minute": "{m}ๅ้",
"hour": "{h}ๅฐๆถ",
"day": "{d}ๅคฉ"
},
"log": {
"empty": "ๆ ๆถๆฏ",
"fetchFailure": "ๆ ๆณๅ ่ฝฝ่ฎข้
ๆบโ{name}โ",
"fetchSuccess": "ๆๅๅ ่ฝฝ {count} ็ฏๆ็ซ ",
"networkError": "่ฟๆฅ่ฎข้
ๆบๆถๅบ้",
"parseError": "่งฃๆXMLไฟกๆฏๆตๆถๅบ้",
"syncFailure": "ๆ ๆณไธๆๅกๅๆญฅ"
},
"nav": {
"menu": "่ๅ",
"refresh": "ๅทๆฐ",
"markAllRead": "ๅ
จ้จๆ ไธบๅทฒ่ฏป",
"notifications": "ๆถๆฏ",
"view": "่งๅพ",
"settings": "้้กน",
"minimize": "ๆๅฐๅ",
"maximize": "ๆๅคงๅ"
},
"menu": {
"close": "ๅ
ณ้ญ่ๅ",
"subscriptions": "่ฎข้
ๆบ"
},
"article": {
"error": "ๆ็ซ ๅ ่ฝฝๅคฑ่ดฅ",
"reload": "้ๆฐๅ ่ฝฝ",
"empty": "ๆ ๆ็ซ ",
"untitled": "๏ผๆ ๆ ้ข๏ผ",
"hide": "้่ๆ็ซ ",
"unhide": "ๅๆถ้่",
"markRead": "ๆ ไธบๅทฒ่ฏป",
"markUnread": "ๆ ไธบๆช่ฏป",
"markAbove": "ๅฐไปฅไธๆ ไธบๅทฒ่ฏป",
"markBelow": "ๅฐไปฅไธๆ ไธบๅทฒ่ฏป",
"star": "ๆ ไธบๆๆ ",
"unstar": "ๅๆถๆๆ ",
"fontSize": "ๅญไฝๅคงๅฐ",
"loadWebpage": "ๅ ่ฝฝ็ฝ้กต",
"loadFull": "ๆๅๅ
จๆ",
"notify": "ๅๅฐๆๅๆถๅ้้็ฅ",
"dontNotify": "ไธๅ้้็ฅ",
"textDir": "ๆๆฌๆนๅ",
"LTR": "ไปๅทฆๅฐๅณ",
"RTL": "ไปๅณๅฐๅทฆ",
"Vertical": "็บตไนฆ",
"font": "ๅญไฝ"
},
"context": {
"share": "ๅไบซ",
"read": "้
่ฏป",
"copyTitle": "ๅคๅถๆ ้ข",
"copyURL": "ๅคๅถ้พๆฅ",
"copy": "ๅคๅถ",
"search": "ไฝฟ็จ {engine} ๆ็ดขโ{text}โ",
"view": "่งๅพ",
"cardView": "ๅก็่งๅพ",
"listView": "ๅ่กจ่งๅพ",
"magazineView": "ๆๅฟ่งๅพ",
"compactView": "็ดงๅ่งๅพ",
"filter": "็ญ้",
"unreadOnly": "ไป
ๆช่ฏปๆ็ซ ",
"starredOnly": "ไป
ๆๆ ๆ็ซ ",
"fullSearch": "ๅจๆญฃๆไธญๆ็ดข",
"showHidden": "ๆพ็คบ้่ๆ็ซ ",
"manageSources": "็ฎก็่ฎข้
ๆบ",
"saveImageAs": "ๅฐๅพๅๅฆๅญไธบ",
"copyImage": "ๅคๅถๅพๅ",
"copyImageURL": "ๅคๅถๅพๅ้พๆฅ",
"caseSensitive": "ๅบๅๅคงๅฐๅ",
"showCover": "ๆพ็คบๅฐ้ข",
"showSnippet": "ๆพ็คบๆ่ฆ",
"fadeRead": "ๆทกๅๅทฒ่ฏปๆ็ซ "
},
"searchEngine": {
"name": "ๆ็ดขๅผๆ",
"bing": "ๅฟ
ๅบ",
"baidu": "็พๅบฆ"
},
"settings": {
"writeError": "ๅๅ
ฅๆไปถๆถๅ็้่ฏฏ",
"name": "้้กน",
"fetching": "ๆญฃๅจๆดๆฐ่ฎข้
ๆบ๏ผ่ฏท็จๅโฆ",
"exit": "้ๅบ้้กน",
"sources": "่ฎข้
ๆบ",
"grouping": "ๅ็ปไธๆๅบ",
"rules": "่งๅ",
"service": "ๆๅก",
"app": "ๅบ็จๅๅฅฝ",
"about": "ๅ
ณไบ",
"version": "็ๆฌ",
"shortcuts": "ๅฟซๆท้ฎ",
"openSource": "ๅผๆบ้กน็ฎ",
"feedback": "ๅ้ฆ"
},
"sources": {
"serviceWarning": "ๆญคๅคๅฏผๅ
ฅๆๆทปๅ ็่ฎข้
ๆบๅฐไธไผไธๆๅก็ซฏๅๆญฅ",
"serviceManaged": "่ฏฅ่ฎข้
ๆบ็ฑๆๅก็ซฏ็ฎก็",
"untitled": "่ฎข้
ๆบ",
"errorAdd": "ๆทปๅ ่ฎข้
ๆบๆถๅบ้",
"errorParse": "่งฃๆOPMLๆไปถๆถๅบ้",
"errorParseHint": "่ฏท็กฎไฟOPMLๆไปถๅฎๆดไธไฝฟ็จUTF-8็ผ็ ใ",
"errorImport": "ๅฏผๅ
ฅ{count}้กน่ฎข้
ๆบๆถๅบ้",
"exist": "่ฏฅ่ฎข้
ๆบๅทฒๅญๅจ",
"opmlFile": "OPMLๆไปถ",
"name": "่ฎข้
ๆบๅ็งฐ",
"editName": "ไฟฎๆนๅ็งฐ",
"fetchFrequency": "ๆๅ้ข็้ๅถ",
"unlimited": "ๆ ้ๅถ",
"openTarget": "่ฎข้
ๆบๆ็ซ ๆๅผๆนๅผ",
"delete": "ๅ ้ค่ฎข้
ๆบ",
"add": "ๆทปๅ ่ฎข้
ๆบ",
"import": "ๅฏผๅ
ฅๆไปถ",
"export": "ๅฏผๅบๆไปถ",
"rssText": "RSSๆญฃๆ",
"loadWebpage": "ๅ ่ฝฝ็ฝ้กต",
"inputUrl": "่พๅ
ฅURL",
"badIcon": "ๅพๆ ไธๅญๅจๆ้ๅพ็",
"badUrl": "่ฏทๆญฃ็กฎ่พๅ
ฅURL",
"deleteWarning": "่ฟๅฐ็งป้ค่ฎข้
ๆบไธๆๆๅทฒไฟๅญ็ๆ็ซ ",
"selected": "้ไธญ่ฎข้
ๆบ",
"selectedMulti": "้ไธญๅคไธช่ฎข้
ๆบ",
"hidden": "ไปโๅ
จ้จๆ็ซ โไธญ้่"
},
"groups": {
"exist": "่ฏฅๅ็ปๅทฒๅญๅจ",
"type": "็ฑปๅ",
"group": "ๅ็ป",
"source": "่ฎข้
ๆบ",
"capacity": "ๅฎน้",
"exitGroup": "้ๅบๅ็ป",
"deleteSource": "ไปๅ็ปๅ ้ค่ฎข้
ๆบ",
"sourceHint": "ๆๆฝ่ฎข้
ๆบไปฅๆๅบ",
"selectAllSources": "้ๆฉๆๆๆบ",
"create": "ๆฐๅปบๅ็ป",
"selectedGroup": "้ไธญๅ็ป",
"selectedSource": "้ไธญ่ฎข้
ๆบ",
"enterName": "่พๅ
ฅๅ็งฐ",
"editName": "ไฟฎๆนๅ็งฐ",
"editGroup": "็ผ่พๅ็ป",
"deleteGroup": "ๅ ้คๅ็ป",
"chooseGroup": "้ๆฉๅ็ป",
"addToGroup": "ๆทปๅ ่ณๅ็ป",
"groupHint": "ๅๅปๅ็ปไปฅไฟฎๆน่ฎข้
ๆบ๏ผๅฏ้่ฟๆๆฝๆๅบ"
},
"rules": {
"intro": "้่ฟๆญฃๅ่กจ่พพๅผ่ชๅจๆ ่ฎฐๆ็ซ ๆๆจ้้็ฅ",
"help": "ไบ่งฃๆดๅค",
"target": "็ฎๆ ",
"selectTarget": "้ๆฉไธไธช็ฎๆ ",
"new": "ๆฐๅปบ่งๅ",
"title": "ๆ ้ข",
"content": "ๆญฃๆ",
"fullSearch": "ๆ ้ขๆๆญฃๆ",
"creator": "ไฝ่
",
"match": "ๅน้
",
"notMatch": "ไธๅน้
",
"regex": "ๆญฃๅ่กจ่พพๅผ",
"badRegex": "ๆญฃๅ่กจ่พพๅผ้ๆณ",
"action": "่กไธบ",
"selectAction": "้ๆฉ่กไธบ",
"hint": "่งๅไป
ๅบ็จไบๆฐ่ทๅ็ๆ็ซ ๏ผ้กบๅบไธบ๏ผๅ
จ้จๆ็ซ โ ๅ็ป โ ่ฎข้
ๆบใ่งๅไปไธๅฐไธๆง่ก๏ผๅ็ปญๆไฝไผๅ
๏ผๅฏๆๆฝๆๅบใๆต่ฏๅ
ๅซๆดๅคง่ๅด็็ฎๆ ่งๅใ",
"test": "ๆต่ฏ่งๅ",
"searchField": "ๆ็ดข่ๅด",
"matchCondition": "ๅน้
ๆกไปถ",
"save": "ไฟๅญ่งๅ",
"selectAll": "้ๆฉๅ
จ้จ่งๅ",
"selectRule": "้ๆฉ่งๅ",
"saveError": "ๆ ๆณไฟๅญ่งๅ๏ผ่ฏท้่ฏใ"
},
"service": {
"intro": "้่ฟ RSS ๆๅก่ทจ่ฎพๅคไฟๆๅๆญฅ",
"select": "้ๆฉๆๅก",
"suggest": "ๅปบ่ฎฎไธ้กนๆฐๆๅก",
"overwriteWarning": "่ฅๆฌๅฐไธๆๅก็ซฏๅญๅจURL็ธๅ็่ฎข้
ๆบ๏ผๅๆฌๅฐ่ฎข้
ๆบๅฐ่ขซๅ ้ค",
"groupsWarning": "ๅ็ปไธไผ่ชๅจไธๆๅก็ซฏไฟๆๅๆญฅ",
"rateLimitWarning": "ไธบ้ฟๅ
้ๆต๏ผๆจ้่ฆๆฐๅปบ่ชๅทฑ็ API Key",
"removeAd": "็งป้คๅนฟๅ",
"endpoint": "็ซฏ็น",
"username": "็จๆทๅ",
"password": "ๅฏ็ ",
"unchanged": "ๆชๆดๆน",
"fetchLimit": "ๅๆญฅๆฐ้",
"fetchLimitNum": "ๆ่ฟ {count} ็ฏๆ็ซ ",
"importGroups": "ๅฏผๅ
ฅๅ็ป",
"failure": "่ฟๆฅๅฐๆๅกๆถๅบ้",
"failureHint": "่ฏทๆฃๆฅๆๅก้
็ฝฎๆ็ฝ็ป่ฟๆฅ",
"fetchUnlimited": "ๆ ้ๅถ๏ผไธๅปบ่ฎฎ๏ผ",
"exportToLite": "ๅฏผๅบ่ณ Fluent Reader Lite"
},
"app": {
"cleanup": "ๆธ
็",
"cache": "ๆธ
็ฉบ็ผๅญ",
"cacheSize": "ๅทฒ็ผๅญ{size}ๆฐๆฎ",
"deleteChoices": "ๅ ้ค โฆ ๅคฉๅ็ๆ็ซ ",
"confirmDelete": "ๅ ้คๆ็ซ ",
"daysAgo": "{days} ๅคฉๅ",
"deleteAll": "ๅ ้คๅ
จ้จๆ็ซ ",
"calculatingSize": "ๆญฃๅจ่ฎก็ฎๅ ็จ็ฉบ้ดโฆ",
"itemSize": "ๆฌๅฐๆ็ซ ็บฆๅ ็จ{size}็ฉบ้ด",
"confirmImport": "็กฎ่ฎค่ฆไปๅคไปฝๆไปถๅฏผๅ
ฅๆฐๆฎๅ๏ผ่ฟๅฐๆธ
้คๆๆๅบ็จๆฐๆฎใ",
"data": "ๅบ็จๆฐๆฎ",
"backup": "ๅคไปฝ",
"restore": "่ฟๅ",
"frData": "Fluent Readerๆฐๆฎ",
"language": "็้ข่ฏญ่จ",
"theme": "ๅบ็จไธป้ข",
"lightTheme": "ๆต
่ฒๆจกๅผ",
"darkTheme": "ๆทฑ่ฒๆจกๅผ",
"enableProxy": "ๅฏ็จไปฃ็",
"badUrl": "่ฏทๆญฃ็กฎ่พๅ
ฅURL",
"pac": "PACๅฐๅ",
"setPac": "่ฎพ็ฝฎPAC",
"pacHint": "ๅฏนไบSocksไปฃ็ๅปบ่ฎฎPAC่ฟๅโSOCKS5โไปฅๅฏ็จไปฃ็็ซฏ่งฃๆใๅ
ณ้ญไปฃ็้้ๅฏๅบ็จๅ็ๆใ",
"fetchInterval": "่ชๅจๆๅ้ข็",
"never": "ไปไธ"
}
}
File: src/scripts/i18n/zh-TW.json
{
"allArticles": "ๅ
จ้จๆ็ซ ",
"add": "ๆฐๅข",
"create": "ๆฐๅปบ",
"icon": "ๅ็คบ",
"name": "ๅ็จฑ",
"openExternal": "ๅจ็่ฆฝๅจไธญ้ๅ",
"emptyName": "ๅ็จฑไธๅพ็บ็ฉบ",
"emptyField": "ๆญค้
ไธๅพ็บ็ฉบ",
"edit": "็ทจ่ผฏ",
"delete": "ๅช้ค",
"followSystem": "่ท้จ็ณป็ตฑ",
"more": "ๆดๅค",
"close": "้้",
"search": "ๆๅฐ",
"loadMore": "่ผๅ
ฅๆดๅค",
"dangerButton": "็ขบ่ช{action}๏ผ",
"confirmMarkAll": "็ขบ่ชๅฐๆฌ้ ๆๆๆ็ซ ๆจ็บๅทฒ่ฎ๏ผ",
"confirm": "็ขบ่ช",
"cancel": "ๅๆถ",
"default": "้ ่จญ",
"time": {
"now": "now",
"m": "m",
"h": "h",
"d": "d",
"minute": "{m}ๅ้",
"hour": "{h}ๅฐๆ",
"day": "{d}ๅคฉ"
},
"log": {
"empty": "็ก่จๆฏ",
"fetchFailure": "็กๆณ่ผๅ
ฅ่จ้ฑๆบโ{name}โ",
"fetchSuccess": "ๆๅ่ผๅ
ฅ {count} ็ฏๆ็ซ ",
"networkError": "้ฃ็ท่จ้ฑๆบๆๅบ้ฏ",
"parseError": "่งฃๆXML่ณ่จๆตๆๅบ้ฏ",
"syncFailure": "็กๆณ่ๆๅๅๆญฅ"
},
"nav": {
"menu": "้ธๅฎ",
"refresh": "้ๆฐๆด็",
"markAllRead": "ๅ
จ้จๆจ็บๅทฒ่ฎ",
"notifications": "่จๆฏ",
"view": "ๆชข่ฆ",
"settings": "้ธ้
",
"minimize": "ๆๅฐๅ",
"maximize": "ๆๅคงๅ"
},
"menu": {
"close": "้้้ธๅฎ",
"subscriptions": "่จ้ฑๆบ"
},
"article": {
"error": "ๆ็ซ ่ผๅ
ฅๅคฑๆ",
"reload": "้ๆฐ่ผๅ
ฅ",
"empty": "็กๆ็ซ ",
"untitled": "๏ผ็กๆจ้ก๏ผ",
"hide": "้ฑ่ๆ็ซ ",
"unhide": "ๅๆถ้ฑ่",
"markRead": "ๆจ็บๅทฒ่ฎ",
"markUnread": "ๆจ็บๆช่ฎ",
"markAbove": "ๅฐไปฅไธๆจ็บๅทฒ่ฎ",
"markBelow": "ๅฐไปฅไธๆจ็บๅทฒ่ฎ",
"star": "ๆจ็บๆๆจ",
"unstar": "ๅๆถๆๆจ",
"fontSize": "ๅญๅๅคงๅฐ",
"loadWebpage": "่ผๅ
ฅ็ถฒ้ ",
"loadFull": "ๆๅๅ
จๆ",
"notify": "ๅพ่บๆๅๆๅณ้้็ฅ",
"dontNotify": "ไธๅณ้้็ฅ",
"textDir": "ๆๆฌๆนๅ",
"LTR": "ๅพๅทฆๅฐๅณ",
"RTL": "ๅพๅณๅฐๅทฆ",
"Vertical": "็ธฑๆธ",
"font": "ๅญ้ซ"
},
"context": {
"share": "ๅไบซ",
"read": "้ฑ่ฎ",
"copyTitle": "่ค่ฃฝๆจ้ก",
"copyURL": "่ค่ฃฝ้ฃ็ต",
"copy": "่ค่ฃฝ",
"search": "ไฝฟ็จ {engine} ๆๅฐโ{text}โ",
"view": "ๆชข่ฆ",
"cardView": "ๅก็ๆชข่ฆ",
"listView": "ๅ่กจๆชข่ฆ",
"magazineView": "้่ชๆชข่ฆ",
"compactView": "็ทๆนๆชข่ฆ",
"filter": "็ฏฉ้ธ",
"unreadOnly": "ๅ
ๆช่ฎๆ็ซ ",
"starredOnly": "ๅ
ๆๆจๆ็ซ ",
"fullSearch": "ๅจๆญฃๆไธญๆๅฐ",
"showHidden": "้กฏ็คบ้ฑ่ๆ็ซ ",
"manageSources": "็ฎก็่จ้ฑๆบ",
"saveImageAs": "ๅฐๅฝฑ่ฑกๅฆๅญ็บ",
"copyImage": "่ค่ฃฝๅฝฑ่ฑก",
"copyImageURL": "่ค่ฃฝๅฝฑ่ฑก้ฃ็ต",
"caseSensitive": "ๅๅๅคงๅฐๅฏซ",
"showCover": "้กฏ็คบๅฐ้ข",
"showSnippet": "้กฏ็คบๆ่ฆ",
"fadeRead": "ๆทกๅๅทฒ่ฎๆ็ซ "
},
"searchEngine": {
"name": "ๆๅฐๅผๆ",
"bing": "ๅฟ
ๆ",
"baidu": "็พๅบฆ"
},
"settings": {
"writeError": "ๅฏซๅ
ฅๆชๆกๆ็ผ็้ฏ่ชค",
"name": "้ธ้
",
"fetching": "ๆญฃๅจๆดๆฐ่จ้ฑๆบ๏ผ่ซ็จๅโฆ",
"exit": "้ๅบ้ธ้
",
"sources": "่จ้ฑๆบ",
"grouping": "ๅ็ต่ๆๅบ",
"rules": "่ฆๅ",
"service": "ๆๅ",
"app": "ๆ็จๅๅฅฝ",
"about": "้ๆผ",
"version": "็ๆฌ",
"shortcuts": "ๅฟซๆท้ต",
"openSource": "้ๆบ้
็ฎ",
"feedback": "ๅ้ฅ"
},
"sources": {
"serviceWarning": "ๆญค่ๅฏๅ
ฅๆๆฐๅข็่จ้ฑๆบๅฐไธๆ่ๆๅ็ซฏๅๆญฅ",
"serviceManaged": "่ฉฒ่จ้ฑๆบ็ฑๆๅ็ซฏ็ฎก็",
"untitled": "่จ้ฑๆบ",
"errorAdd": "ๆฐๅข่จ้ฑๆบๆๅบ้ฏ",
"errorParse": "่งฃๆOPMLๆชๆกๆๅบ้ฏ",
"errorParseHint": "่ซ็ขบไฟOPMLๆชๆกๅฎๆดไธไฝฟ็จUTF-8็ทจ็ขผใ",
"errorImport": "ๅฏๅ
ฅ{count}้
่จ้ฑๆบๆๅบ้ฏ",
"exist": "่ฉฒ่จ้ฑๆบๅทฒๅญๅจ",
"opmlFile": "OPMLๆชๆก",
"name": "่จ้ฑๆบๅ็จฑ",
"editName": "ไฟฎๆนๅ็จฑ",
"fetchFrequency": "ๆๅ้ ป็้ๅถ",
"unlimited": "็ก้ๅถ",
"openTarget": "่จ้ฑๆบๆ็ซ ้ๅๆนๅผ",
"delete": "ๅช้ค่จ้ฑๆบ",
"add": "ๆฐๅข่จ้ฑๆบ",
"import": "ๅฏๅ
ฅๆชๆก",
"export": "ๅฏๅบๆชๆก",
"rssText": "RSSๆญฃๆ",
"loadWebpage": "่ผๅ
ฅ็ถฒ้ ",
"inputUrl": "่ผธๅ
ฅURL",
"badIcon": "ๅ็คบไธๅญๅจๆ้ๅ็",
"badUrl": "่ซๆญฃ็ขบ่ผธๅ
ฅURL",
"deleteWarning": "้ๅฐ็งป้ค่จ้ฑๆบ่ๆๆๅทฒๅฒๅญ็ๆ็ซ ",
"selected": "้ธไธญ่จ้ฑๆบ",
"selectedMulti": "้ธไธญๅคๅ่จ้ฑๆบ",
"hidden": "ๅพโๅ
จ้จๆ็ซ โไธญ้ฑ่"
},
"groups": {
"exist": "่ฉฒๅ็ตๅทฒๅญๅจ",
"type": "้กๅ",
"group": "ๅ็ต",
"source": "่จ้ฑๆบ",
"capacity": "ๅฎน้",
"exitGroup": "้ๅบๅ็ต",
"deleteSource": "ๅพๅ็ตๅช้ค่จ้ฑๆบ",
"sourceHint": "ๆๆฝ่จ้ฑๆบไปฅๆๅบ",
"selectAllSources": "้ธๅๆๆไพๆบ",
"create": "ๆฐๅปบๅ็ต",
"selectedGroup": "้ธไธญๅ็ต",
"selectedSource": "้ธไธญ่จ้ฑๆบ",
"enterName": "่ผธๅ
ฅๅ็จฑ",
"editName": "ไฟฎๆนๅ็จฑ",
"editGroup": "็ทจ่ผฏ็พค็ต",
"deleteGroup": "ๅช้คๅ็ต",
"chooseGroup": "้ธๆๅ็ต",
"addToGroup": "ๆฐๅข่ณๅ็ต",
"groupHint": "้ๆๅ็ตไปฅไฟฎๆน่จ้ฑๆบ๏ผๅฏ้้ๆๆฝๆๅบ"
},
"rules": {
"intro": "้้ๆญฃ่ฆ่กจ็คบๅผ่ชๅๆจ่จๆ็ซ ๆๆจ้้็ฅ",
"help": "็ญ่งฃๆดๅค",
"target": "็ฎๆจ",
"selectTarget": "้ธๆไธๅ็ฎๆจ",
"new": "ๆฐๅปบ่ฆๅ",
"title": "ๆจ้ก",
"content": "ๆญฃๆ",
"fullSearch": "ๆจ้กๆๆญฃๆ",
"creator": "ไฝ่
",
"match": "ๅน้
",
"notMatch": "ไธๅน้
",
"regex": "ๆญฃ่ฆ่กจ็คบๅผ",
"badRegex": "ๆญฃ่ฆ่กจ็คบๅผ้ๆณ",
"action": "่ก็บ",
"selectAction": "้ธๆ่ก็บ",
"hint": "่ฆๅๅ
ๅฅ็จๆผๆฐๅๅพ็ๆ็ซ ๏ผ้ ๅบ็บ๏ผๅ
จ้จๆ็ซ โ ็พค็ต โ ่จ้ฑๆบใ่ฆๅ็ฑไธ่ไธๅท่ก๏ผๅพ็บๆไฝๅชๅ
๏ผๅฏๆๆณๆๅบใๆธฌ่ฉฆๅ
ๅซ่ผๅคง็ฏๅ็็ฎๆจ่ฆๅใ",
"test": "ๆธฌ่ฉฆ่ฆๅ",
"searchField": "ๆๅฐ็ฏๅ",
"matchCondition": "ๆฏๅฐๆขไปถ",
"save": "ๅฒๅญ่ฆๅ",
"selectAll": "้ธๅๅ
จ้จ่ฆๅ",
"selectRule": "้ธๅ่ฆๅ",
"saveError": "็กๆณๅฒๅญ่ฆๅ๏ผ่ซ้่ฉฆใ"
},
"service": {
"intro": "้้ RSS ๆๅ่ทจ่ฃ็ฝฎไฟๆๅๆญฅ",
"select": "้ธๆๆๅ",
"suggest": "ๅปบ่ญฐไธ้
ๆฐๆๅ",
"overwriteWarning": "่ฅๆฌๅฐ่ๆๅ็ซฏๅญๅจURL็ธๅ็่จ้ฑๆบ๏ผๅๆฌๅฐ่จ้ฑๆบๅฐ่ขซๅช้ค",
"groupsWarning": "ๅ็ตไธๆ่ชๅ่ๆๅ็ซฏไฟๆๅๆญฅ",
"rateLimitWarning": "็บ้ฟๅ
้ๆต๏ผๆจ้่ฆๆฐๅปบ่ชๅทฑ็ API Key",
"removeAd": "็งป้คๅปฃๅ",
"endpoint": "็ซฏ้ป",
"username": "ไฝฟ็จ่
ๅ็จฑ",
"password": "ๅฏ็ขผ",
"unchanged": "ๆชๆดๆน",
"fetchLimit": "ๅๆญฅๆธ้",
"fetchLimitNum": "ๆ่ฟ {count} ็ฏๆ็ซ ",
"importGroups": "ๅฏๅ
ฅๅ็ต",
"failure": "้ฃ็ทๅฐๆๅๆๅบ้ฏ",
"failureHint": "่ซๆชขๆฅๆๅ้
็ฝฎๆ็ถฒ่ทฏ้ฃ็ท",
"fetchUnlimited": "็ก้ๅถ๏ผไธๅปบ่ญฐ๏ผ",
"exportToLite": "ๅฏๅบ่ณ Fluent Reader Lite"
},
"app": {
"cleanup": "ๆธ
็",
"cache": "ๆธ
็ฉบๅฟซๅ",
"cacheSize": "ๅทฒๅฟซๅ{size}่ณๆ",
"deleteChoices": "ๅช้ค โฆ ๅคฉๅ็ๆ็ซ ",
"confirmDelete": "ๅช้คๆ็ซ ",
"daysAgo": "{days} ๅคฉๅ",
"deleteAll": "ๅช้คๅ
จ้จๆ็ซ ",
"calculatingSize": "ๆญฃๅจ่จ็ฎไฝ็จ็ฉบ้โฆ",
"itemSize": "ๆฌๅฐๆ็ซ ็ดไฝ็จ{size}็ฉบ้",
"confirmImport": "็ขบ่ช่ฆๅพๅไปฝๆชๆกๅฏๅ
ฅ่ณๆๅ๏ผ้ๅฐๆธ
้คๆๆๆ็จ่ณๆใ",
"data": "ๆ็จ่ณๆ",
"backup": "ๅไปฝ",
"restore": "้ๅ",
"frData": "Fluent Reader่ณๆ",
"language": "ไป้ข่ช่จ",
"theme": "ๆ็จไธป้ก",
"lightTheme": "ๆทบ่ฒๆจกๅผ",
"darkTheme": "ๆทฑ่ฒๆจกๅผ",
"enableProxy": "ๅ็จไปฃ็",
"badUrl": "่ซๆญฃ็ขบ่ผธๅ
ฅURL",
"pac": "PACๅฐๅ",
"setPac": "่จญๅฎPAC",
"pacHint": "ๅฐๆผSocksไปฃ็ๅปบ่ญฐPAC่ฟๅโSOCKS5โไปฅๅ็จไปฃ็็ซฏ่งฃๆใ้้ไปฃ็้้ๅๆ็จๅพ็ๆใ",
"fetchInterval": "่ชๅๆๅ้ ป็",
"never": "ๅพไธ"
}
}
File: tests/README.md
Private end-to-end tests
The optional e2e submodule is maintained in the privateyang991178/fluent-reader-tests repository. Normal installs, builds, and release
workflows do not need it. Recursive clones require access to that repository.
From the application repository root:
git submodule update --init tests/e2e
npm install
npm run build
npm --prefix tests/e2e ci
npm --prefix tests/e2e testSee tests/e2e/README.md for the harness architecture and diagnostics. Commit
and push test changes in the private repository before publishing an updated
submodule pointer here. Never add test sources or reports directly to this
public repository.
File: .github/FUNDING.yml
These are supported funding model platforms
github: ["yang991178"] # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
patreon: # Replace with a single Patreon username
open_collective: # "fluent-reader"
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
custom:
[
"https://www.paypal.me/yang991178",
"https://hyliu.me/fluent-reader/imgs/alipay.jpg",
]
File: .github/ISSUE_TEMPLATE/bug_report.md
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:
- Go to '...'
- Click on '....'
- Scroll down to '....'
- 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.
Platform (please complete the following information):
- OS: [e.g. Windows 10 2004]
- Version [e.g. 0.6.1]
Additional context
Add any other context about the problem here.
File: .github/ISSUE_TEMPLATE/feature_request.md
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.
File: .github/workflows/pages.yml
name: Deploy GitHub Pages
on:
push:
branches: [master]
paths:
- "docs/**"
- ".github/workflows/pages.yml"
workflow_dispatch:
permissions:
contents: read
pages: write
id-token: write
concurrency:
group: pages
cancel-in-progress: false
jobs:
deploy:
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: false
- name: Configure Pages
uses: actions/configure-pages@v5
- name: Upload site
uses: actions/upload-pages-artifact@v3
with:
path: docs
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v5File: .github/workflows/release-linux.yml
name: CI/CD Release Linux
on:
release:
types:
- published
workflow_dispatch:
inputs:
tag:
required: true
type: string
permissions:
contents: write
jobs:
release-linux:
runs-on: ubuntu-latest
env:
RELEASE_TAG: ${{ github.event.release.tag_name || inputs.tag }}
steps:
- uses: actions/checkout@v7
with:
ref: ${{ env.RELEASE_TAG }}
- uses: actions/setup-node@v7
with:
node-version: "24"
package-manager-cache: false
- name: Verify release exists
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: gh release view "$RELEASE_TAG" --repo "$GITHUB_REPOSITORY" > /dev/null
- name: Build and package the app
run: |
npm install
npm run build
npm run package-linux
- name: Upload AppImage to release assets
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
version="$(node -p "require('./package.json').version")"
asset_path="$RUNNER_TEMP/Fluent.Reader.$version.AppImage"
cp "./bin/linux/x64/Fluent Reader-$version.AppImage" "$asset_path"
gh release upload "$RELEASE_TAG" "$asset_path" --repo "$GITHUB_REPOSITORY" --clobberFile: .github/workflows/release-main.yml
name: CI/CD Release
on:
push:
tags:
- "v*"
jobs:
release:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- name: Build and package the app
run: |
npm install
npm run build
npm run package-win-ci
- name: Get app version
id: package-version
run: |
PACKAGE_VERSION=$(cat package.json | grep version | head -1 | awk -F: '{ print $2 }' | sed 's/[",]//g' | tr -d '[[:space:]]')
echo ::set-output name=current-version::$PACKAGE_VERSION
shell: bash
- name: Create release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: Fluent Reader v${{ steps.package-version.outputs.current-version }}
draft: true
prerelease: false
- name: Upload x64 exe to release assets
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./bin/win32/x64/Fluent Reader Setup ${{ steps.package-version.outputs.current-version }}.exe
asset_name: Fluent.Reader.Setup.${{ steps.package-version.outputs.current-version }}.x64.exe
asset_content_type: application/vnd.microsoft.portable-executable
- name: Upload x64 zip to release assets
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./bin/win32/x64/Fluent Reader-${{ steps.package-version.outputs.current-version }}-win.zip
asset_name: Fluent.Reader.Unpacked.${{ steps.package-version.outputs.current-version }}.x64.zip
asset_content_type: application/zip