Repository: hello-efficiency-inc/raven-reader Branch: master Commit: 5e55819b3fd6 Files: 115 Total size: 442.5 KB Directory structure: gitextract__ejr98ga/ ├── .browserslistrc ├── .editorconfig ├── .eslintrc.js ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ └── feature_request.md │ ├── stale.yml │ └── workflows/ │ └── build.yml ├── .gitignore ├── LICENSE ├── README.md ├── SECURITY.md ├── babel.config.js ├── build/ │ └── icons/ │ └── icon.icns ├── package.json ├── public/ │ ├── index.html │ └── locales/ │ ├── ar/ │ │ └── translation.json │ ├── ca/ │ │ └── translation.json │ ├── de/ │ │ └── translation.json │ ├── en/ │ │ └── translation.json │ ├── en-US/ │ │ ├── translation.json │ │ └── translation.missing.json │ ├── es/ │ │ └── translation.json │ ├── fr/ │ │ └── translation.json │ ├── it/ │ │ └── translation.json │ ├── ja/ │ │ ├── translation.json │ │ └── translation.missing.json │ ├── nl/ │ │ ├── translation.json │ │ └── translation.missing.json │ ├── pl/ │ │ └── translation.json │ ├── pt-br/ │ │ └── translation.json │ ├── ru/ │ │ ├── translation.json │ │ └── translation.missing.json │ ├── tr/ │ │ ├── translation.json │ │ └── translation.missing.json │ ├── zh-CN/ │ │ └── translation.json │ └── zh-TW/ │ └── translation.json ├── src/ │ ├── App.vue │ ├── background.js │ ├── bridge/ │ │ ├── electron.js │ │ ├── electronstore.js │ │ ├── feedbin.js │ │ ├── fever.js │ │ ├── greader.js │ │ ├── inoreader.js │ │ ├── instapaper.js │ │ ├── mercury.js │ │ ├── pocket.js │ │ ├── rss.js │ │ └── sanitize.js │ ├── components/ │ │ ├── AppIcon.vue │ │ ├── ArticleDetail.vue │ │ ├── ArticleList.vue │ │ ├── ArticleListItem.vue │ │ ├── ArticleToolbar.vue │ │ ├── BouncingLoader.vue │ │ ├── EditCategory.vue │ │ ├── EditFeed.vue │ │ ├── FeedMix.vue │ │ ├── Feedbin.vue │ │ ├── Fever.vue │ │ ├── ImportModal.vue │ │ ├── Inoreader.vue │ │ ├── ManageCategories.vue │ │ ├── ManageFeeds.vue │ │ ├── MarkReadModal.vue │ │ ├── MarkUnreadModal.vue │ │ ├── MenuItems.vue │ │ ├── PreferenceWindowModal.vue │ │ ├── SelfHostedGreader.vue │ │ ├── SubscribeModal.vue │ │ ├── SubscribeToolbar.vue │ │ ├── Subscriptions.vue │ │ └── register.js │ ├── db.js │ ├── external_links.js │ ├── i18n.config.js │ ├── i18nmain.config.js │ ├── main/ │ │ ├── article.js │ │ ├── menu.js │ │ ├── pocket.js │ │ └── touchbar.js │ ├── main.js │ ├── mixins/ │ │ ├── articleCount.js │ │ ├── cheerio.js │ │ ├── dataItems.js │ │ ├── feedMix.js │ │ ├── serviceSync.js │ │ └── setTheme.js │ ├── parsers/ │ │ ├── article.js │ │ └── feed.js │ ├── preload.js │ ├── router/ │ │ └── index.js │ ├── services/ │ │ ├── bridge.js │ │ ├── bus.js │ │ ├── cacheArticle.js │ │ ├── db.js │ │ ├── feedbin.js │ │ ├── fever.js │ │ ├── greader.js │ │ ├── helpers.js │ │ ├── inoreader.js │ │ ├── opml.js │ │ ├── sortBy.js │ │ ├── truncate.js │ │ └── unescape.js │ ├── store/ │ │ ├── index.js │ │ └── modules/ │ │ ├── Article.js │ │ ├── Category.js │ │ ├── Database.js │ │ ├── Feed.js │ │ ├── FeedManager.js │ │ ├── Setting.js │ │ └── index.js │ └── views/ │ └── Main.vue └── vue.config.js ================================================ FILE CONTENTS ================================================ ================================================ FILE: .browserslistrc ================================================ > 1% last 2 versions not dead ================================================ FILE: .editorconfig ================================================ [*.{js,jsx,ts,tsx,vue}] indent_style = space indent_size = 2 trim_trailing_whitespace = true insert_final_newline = true ================================================ FILE: .eslintrc.js ================================================ module.exports = { root: true, env: { node: true }, extends: [ 'plugin:vue/recommended' ], parserOptions: { parser: 'babel-eslint' }, rules: { 'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off', 'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off', 'vue/no-v-html': 'off' } } ================================================ FILE: .github/ISSUE_TEMPLATE/bug_report.md ================================================ --- name: Bug report about: Create a report to help us improve --- **Describe the bug** A clear and concise description of what the bug is. **To Reproduce** Steps to reproduce the behavior: 1. Go to '...' 2. Click on '....' 3. Scroll down to '....' 4. See error **Expected behavior** A clear and concise description of what you expected to happen. **Screenshots** If applicable, add screenshots to help explain your problem. **Desktop (please complete the following information):** - OS: [e.g. iOS] - Browser [e.g. chrome, safari] - Version [e.g. 22] **Smartphone (please complete the following information):** - Device: [e.g. iPhone6] - OS: [e.g. iOS8.1] - Browser [e.g. stock browser, safari] - Version [e.g. 22] **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 --- **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/stale.yml ================================================ # Number of days of inactivity before an issue becomes stale daysUntilStale: 60 # Number of days of inactivity before a stale issue is closed daysUntilClose: 7 # Issues with these labels will never be considered stale exemptLabels: - pinned - enhancement - security # Comment to post when marking an issue as stale. Set to `false` to disable markComment: > This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. # Comment to post when closing a stale issue. Set to `false` to disable closeComment: true ================================================ FILE: .github/workflows/build.yml ================================================ name: Build/release on: push jobs: release: runs-on: ${{ matrix.os }} strategy: matrix: os: [macos-latest, ubuntu-latest, windows-latest] steps: - name: Check out Git repository uses: actions/checkout@v1 - name: Install Node.js, NPM and Yarn uses: actions/setup-node@v1 with: node-version: 15 - name: Prepare for app notarization if: startsWith(matrix.os, 'macos') # Import Apple API key for app notarization on macOS run: | mkdir -p ~/private_keys/ echo '${{ secrets.api_key }}' > ~/private_keys/AuthKey_${{ secrets.api_key_id }}.p8 - name: Build/release Raven Reader app uses: samuelmeuli/action-electron-builder@v1.6.0 with: skip_build: true use_vue_cli: true # GitHub token, automatically provided to the action # (No need to define this secret in the repo settings) github_token: ${{ secrets.github_token }} # If the commit is tagged with a version (e.g. "v1.0.0"), # release the app after building release: ${{ startsWith(github.ref, 'refs/tags/v') }} # Mac Signing mac_certs: ${{ secrets.mac_certs }} mac_certs_password: ${{ secrets.mac_certs_password }} # Win Signing windows_certs: ${{ secrets.window_certs }} windows_certs_password: ${{ secrets.windows_certs_password }} env: # macOS notarization API key API_KEY_ID: ${{ secrets.api_key_id }} API_KEY_ISSUER_ID: ${{ secrets.api_key_issuer_id }} ================================================ FILE: .gitignore ================================================ .DS_Store node_modules /dist # local env files .env .env.local .env.*.local # Log files npm-debug.log* yarn-debug.log* yarn-error.log* pnpm-debug.log* # Editor directories and files .idea .vscode *.suo *.ntvs* *.njsproj *.sln *.sw? #Electron-builder output /dist_electron *.pfx *.p12 ================================================ FILE: LICENSE ================================================ Copyright 2022 Hello Efficiency Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ================================================ FILE: README.md ================================================

raven reader logo

All your articles in one place. Beautiful.

DeepScan grade raven-reader

## NOTE Working on the new version completely re-written. This version of Raven Reader would no longer be maintained. Stay tuned for more announcements and new repo. ## Download To download, please visit https://ravenreader.app. [![Get it from the Snap Store](https://snapcraft.io/static/images/badges/en/snap-store-black.svg)](https://snapcraft.io/raven-reader) ## Install via [Homebrew](https://formulae.brew.sh/cask/raven-reader) (macOS) To use Homebrew-Cask you just need to have [Homebrew](https://brew.sh/) installed. ```bash brew install --cask raven-reader ``` ## Install via [Chocolatey](https://community.chocolatey.org/packages/raven) (Windows) (Thanks to [@A-d-r-i](https://github.com/A-d-r-i)) ``` choco install raven ``` ![darkscreenshot](/darkscreenshot.png) ![video](/video.png) ![podcast](/podcast.png) ## Features - [x] Full Article Read - [x] Subscribing to news feed - [x] Marking as read/unread - [x] Marking as favourite - [x] Dark mode - [x] Configurable cron job for refresh interval of feeds - [x] Minimize app to tray and run in background - [x] Open article link in external browser - [x] Responsive - [x] Exporting feed in OPML format - [x] Importing feeds - [x] Windows support - [x] Linux support - [x] Offline reading - [x] Keyboard Shortcuts - [x] Sidebar count - [x] Text size configuration - [x] Text font style configuration (Currently has Playfair Display, Muli, Open Sans and Roboto Slab) - [x] Supports categorizing of the feeds. - [x] macOS touchbar shortcuts - [x] Integration with read it later apps: Pocket, Instapaper - [x] Podcast support. Subscribe to podcast rss feed and listen within app. - [x] Accessibility Friendly - [x] Feedbin integration (Folders are WIP) - [x] Inoreader integration - [x] Google Reader API support. Supports self hosted RSS Services like FreshRSS.org etc. (Folders are WIP) - [x] Support for subscribing Youtube channels and viewing within app. - [x] Flexible resizing of columns/panes Please feel free to suggest more ideas to improve this app. ## Supported Platforms - Feedbin - Inoreader - Self hosted RSS Services compatible with Google Reader API (OldReader, Bazqux, FreshRSS) - Fever ## Supported Locale | Language | Contributor | |-----------|--------------| | English | | | French | | | Catalan | [alexhoma](https://github.com/alexhoma)| | Turkish | [ahmetcadirci25](https://github.com/ahmetcadirci25)| | Chinese | [@LinWhite2333](https://github.com/@LinWhite2333)| | Dutch | [@Vistause](https://github.com/Vistause) | | Russian | [@vanja-san](https://github.com/vanja-san) | | Polish | [@konhi](https://github.com/konhi)| | Brazilian Portuguese | [@gabrielgomeso](https://github.com/gabrielgomeso)| | Italian | [@luverolla](https://github.com/luverolla)| | German | [@nebulon42](https://github.com/nebulon42)| ## Contributions We're excited that you're wanting to help us make Raven Reader even better! Contributions of all sizes are welcome, if you'd like to work on something take a look through the current [GitHub issues](https://github.com/hello-efficiency-inc/raven-reader/issues). If it's a new feature or potential bugs, please make a new issue ticket for it and populate it accordingly. ## Contributors Wall _Note: It may take up to 24h for the [contrib.rocks](https://contrib.rocks/image?repo=hello-efficiency-inc/raven-reader) plugin to update because it's refreshed once a day._ ## Developer Notes For setup instructions and configuration follow https://github.com/nklayman/vue-cli-plugin-electron-builder #### Build Setup ``` bash # install dependencies yarn install # serve with hot reload at localhost:9080 yarn electron:serve # build electron application for production yarn electron:build # lint all JS/Vue component files in `src/` yarn run lint ``` ## Powered by - [Bootstrap](https://getbootstrap.com) - [Vue](https://www.vuejs.org) & [Vuex](https://vuex.vuejs.org) - [Lovefield](https://github.com/google/lovefield) - [Mercury Parser](https://mercury.postlight.com/web-parser/) ## License [MIT](https://github.com/mrgodhani/rss-reader/blob/master/LICENSE) ================================================ FILE: SECURITY.md ================================================ # Security Policy ## Reporting a Vulnerability Please report any vulnerability or security issues via email at welcome@helloefficiency.com ================================================ FILE: babel.config.js ================================================ module.exports = { presets: [ '@vue/cli-plugin-babel/preset' ] } ================================================ FILE: package.json ================================================ { "name": "raven-reader", "productName": "Raven Reader", "version": "1.0.80", "author": "Hello Efficiency Inc. ", "description": "Simple desktop RSS Reader", "license": "MIT", "scripts": { "serve": "vue-cli-service serve", "build": "vue-cli-service build", "lint": "vue-cli-service lint", "electron:build": "vue-cli-service electron:build", "electron:release-all": "vue-cli-service electron:build --mac --win --linux -p always", "electron:release-mac": "vue-cli-service electron:build --mac -p always", "electron:release-other": "vue-cli-service electron:build --win --linux -p always", "electron:release-linux": "vue-cli-service electron:build --linux -p always", "electron:serve": "vue-cli-service electron:serve", "electron:generate-icons": "electron-icon-builder --input=./public/icon.png --output=build --flatten", "postinstall": "electron-builder install-app-deps", "postuninstall": "electron-builder install-app-deps" }, "main": "background.js", "dependencies": { "@cliqz/adblocker-electron": "^1.23.7", "@panter/vue-i18next": "^0.15.2", "@postlight/mercury-parser": "^2.2.0", "axios": "^1.1.2", "bootstrap": "^4.6.1", "bootstrap-vue": "^2.22.0", "btoa": "^1.2.1", "core-js": "^3.22.3", "cross-fetch": "^3.1.3-alpha.6", "crypto-js": "^4.0.0", "dayjs": "^1.11.1", "electron-context-menu": "^3.2.0", "electron-log": "^4.2.2", "electron-store": "^8.0.0", "electron-updater": "^5.0.5", "electron-util": "^0.17.0", "fast-xml-parser": "^4.0.7", "feather-icons": "^4.29.0", "form-data": "^4.0.0", "fuse.js": "^6.4.1", "global-agent": "^3.0.0", "i18next": "^22.4.13", "i18next-browser-languagedetector": "^7.0.1", "i18next-electron-fs-backend": "^3.0.0", "i18next-electron-language-detector": "^0.0.10", "i18next-fs-backend": "^2.1.1", "jquery": "^3.6.0", "js-yaml": "^4.1.0", "lovefield": "^2.1.12", "md5": "^2.3.0", "node-fetch": "^2.6.7", "node-schedule": "^2.0.0", "normalize-url": "^6.0.1", "opml-generator": "^1.1.1", "os-locale": "^6.0.0", "plyr": "^3.7.2", "reading-time": "^1.2.0", "request": "^2.88.2", "rss-finder": "^2.1.4", "rss-parser": "^3.10.0", "sanitize-html": "^2.4.0", "sass-rem": "^3.0.0", "splitpanes": "^2.3.0", "ssri": "^8.0.1", "tough-cookie": "^4.0.0", "uuid-by-string": "^4.0.0", "v-click-outside": "^3.0.1", "v8-compile-cache": "^2.1.1", "vue": "^2.6.11", "vue-plyr": "^7.0.0-beta.1", "vue-router": "^3.2.0", "vue-social-sharing": "2.4.7", "vue-toasted": "^1.1.28", "vue-top-progress": "^0.7.0", "vue2-perfect-scrollbar": "^1.5.0", "vuex": "^3.4.0", "yargs-parser": "^20.2.7" }, "devDependencies": { "@vue/cli-plugin-babel": "^4.4.0", "@vue/cli-plugin-eslint": "^4.4.0", "@vue/cli-plugin-router": "^4.4.0", "@vue/cli-plugin-vuex": "^4.4.0", "@vue/cli-service": "^4.4.0", "@vue/eslint-config-standard": "^6.0.0", "babel-eslint": "^10.1.0", "electron": "^19.0.10", "electron-builder": "^23.1.0", "electron-builder-notarize": "^1.2.0", "electron-devtools-installer": "^3.1.0", "electron-icon-builder": "^2.0.1", "electron-notarize": "^1.2.1", "eslint": "^7.7.0", "eslint-plugin-import": "^2.23.4", "eslint-plugin-node": "^11.1.0", "eslint-plugin-promise": "^5.1.0", "eslint-plugin-standard": "^5.0.0", "eslint-plugin-vue": "^7.1.0", "sass": "^1.51.0", "sass-loader": "^10.0.5", "vue-cli-plugin-electron-builder": "^2.0.0-rc.4", "vue-template-compiler": "^2.6.11" }, "resolutions": { "lovefield/js-yaml": "3.13.1", "ssri": "^6.0.2", "jquery": "^3.6.0", "electron-icon-builder/**/yargs-parser": "13.1.2", "vue-cli-plugin-electron-builder/**/ansi-regex": "5.0.1", "@postlight/mercury-parser/yargs-parser": "15.0.1", "@postlight/mercury-parser/**/nth-check": "2.0.1", "@postlight/mercury-parser/**/moment": "2.29.2", "electron-builder/**/async": "2.6.4", "electron-builder/**/ejs": "3.1.7", "electron-builder/**/plist": "3.0.5", "vue-cli-plugin-electron-builder/**/minimist": "0.2.1", "vue-cli-plugin-electron-builder/electron-builder": "22.14.13", "**/glob-parent": "^5.1.2", "@postlight/mercury-parser/**/node-fetch": "2.6.7", "@vue/cli-service/**/node-forge": "1.3.0", "@vue/cli-service/**/ejs": "3.1.7", "@vue/cli-service/**/nth-check": "2.0.1" } } ================================================ FILE: public/index.html ================================================ Raven Reader
================================================ FILE: public/locales/ar/translation.json ================================================ { "All Feeds": "كل الخلاصات", "Favourites": "المفضلة", "Unread Articles": "مقالات غير مقروءة", "Recently Read": "تمت قراءته مؤخرًا", "Recently Played": "لعبت مؤخرا", "Saved articles": "المقالات المحفوظة", "Show more": "أظهر المزيد", "Show less": "عرض أقل", "Subscriptions": "الاشتراكات", "Add": "أضف", "Please select category": "الرجاء تحديد الفئة", "Add new category": "إضافة فئة جديدة", "Close": "أغلق", "Subscribe": "إشترك", "No articles available": "لا توجد مقالات متاحة", "Load more": "تحميل المزيد", "Subscriptions added from here would not be synced with your service": "لن تتم مزامنة الاشتراكات المضافة من هنا مع خدمتك", "Enter website or feed url": "أدخل موقع الويب أو رابط الخلاصة", "Enter new category": "أدخل فئة جديدة", "Search": "بحث", "Refresh All Feeds": "تحديث جميع الخلاصات", "Mark all as read": "جعل جميع المقالة مقروءة", "Settings": "إعدادات", "Preferences": "التفضيلات", "Keep read RSS items": "حافظ على قراءة عناصر RSS", "Set refresh interval for news feed": "تعيين الفاصل الزمني لتحديث الخلاصات", "Choose appearance": "اختر المظهر", "Oldest articles first": "أقدم المقالات أولاً", "Disable images in Articles": "تعطيل الصور في المقالات", "Full article view by default": "عرض كامل للمقالة بشكل افتراضي", "Delete all feed, category and article data": "احذف جميع بيانات الخلاصة والفئة والمقالة", "Clear all data": "امسح كل البيانات", "Proxy Setting": "تحديد الوكيل", "Web Server (HTTP)": "خادم الويب (HTTP)", "Secure Web Server (HTTPS)": "خادم الويب الآمن (HTTPS)", "Bypass proxy settings for these hosts & domains": "تجاوز إعدادات الوكيل لهذه الأجهزة المضيفة والمجالات", "Set proxy & restart": "تعيين الوكيل وإعادة التشغيل", "Connect Instapaper": "قم بتوصيل Instapaper", "Connect pocket": "قم بتوصيل Pocket", "Log into Instapaper": "تسجيل الدخول ل Instapaper", "Enter endpoint": "أدخل نقطة النهاية", "Enter email": "أدخل البريد الإلكتروني", "Enter password": "أدخل كلمة المرور", "Read it later services": "خدمات اقرأها لاحقًا", "Sharing": "مشاركة", "Save articles to read it later services": "خدمات حفظ المقالات لقراءتها لاحقا", "Instapaper": "Instapaper", "Connect": "وصل", "Pocket": "Pocket", "RSS Services": "خدمات RSS", "Sync across device with RSS services": "خدمات المزامنة بين الأجهزة مع RSS", "Only one service can be connected If you have local sources prior to connecting sync accounts that share same feed URLs, local articles will be removed": "يمكن توصيل خدمة واحدة فقط إذا كانت لديك مصادر محلية قبل ربط حسابات المزامنة التي تشارك نفس عناوين URL للخلاصة ، فستتم إزالة المقالات المحلية", "Invalid credentials": "أوراق الاعتماد غير صالحة", "Cancel": "إلغاء", "Login": "لدخول", "OPML is a standard format to import or export feed subscriptions You can export OPML files from other readers and import it": "OPML هو تنسيق قياسي لاستيراد أو تصدير اشتراكات الخلاصة. يمكنك تصدير ملفات OPML من أجهزة قراءة أخرى واستيرادها", "Import": "استيراد", "Import Subscriptions from OPML file": "استيراد الاشتراكات من ملف OPML", "Choose a file": "اختر ملفًا", "Edit Feed": "تحرير الخلاصة", "Update": "تحديث", "Rename category": "إعادة تسمية الفئة", "Mark all articles as read": "جعل جميع المقالة مقروءة", "Are you sure you want to mark all articles as read?": "هل أنت متأكد من جعل جميع المقالات مقروءة؟", "Yes": "نعم", "No": "لا", "Full Content": "المحتوى الكامل", "Save article": "احفظ المقال", "View original": "إظهار النسخة الأصلية", "Format Options": "خيارات التنسيق", "Mark as unread": "جعل غير مقروءة", "Mark as read": "جعل مقروءة", "Mark as unfavourite": "جعل غير مفضلة", "Mark as favourite": "جعل مفضلة", "Disconnect": "قطع الاتصال", "Sync Account": "مزامنة الحساب", "Quit": "خروج", "Edit": "تعديل", "View": "عرض", "Add subscription": "إضافة اشتراك", "Item": "عنصر", "Next item": "العنصر التالي", "Previous item": "العنصر السابق", "Toggle read": "تبديل القراءة", "Toggle favourite": "تبديل المفضلة", "Mark all read": "جعل الكل مقروء", "Save offline": "حفظ دون اتصال", "View in browser": "عرض في المتصفح", "Import and Export": "الاستيراد والتصدير", "Import subscriptions": "استيراد الاشتراكات", "Export subscriptions": "تصدير الاشتراكات", "Speech": "الكلام", "Start in tray": "ابدأ في علبة", "Automatically add to Recently": "أضف تلقائيًا إلى مؤخرًا", "Automatically add to Recently Read": "أضف تلقائيًا إلى ما تمت قراءته مؤخرًا", "Content preview": "معاينة المحتوى", "Manage categories": "إدارة الفئات", "Manage feeds": "إدارة الخلاصات", "Connect Feedbin": "قم بتوصيل Feedbin", "Log into Feedbin": "سجّل الدخول إلى Feedbin", "Connect Self-hosted (Google Reader API)": "ربط ذاتية الاستضافة (Google Reader API)", "Log into Self Hosted RSS Service": "قم بتسجيل الدخول إلى خدمة RSS ذاتية الاستضافة", "Enter username": "ادخل اسم المستخدم", "Connect Fever": "قم بتوصيل Fever", "Log into Fever": "سجّل الدخول إلى Fever", "No categories available": "لا توجد فئات متاحة", "Feed in this categories would not be deleted": "لن يتم حذف الخلاصات في هذه الفئات", "Please select atleast one feed": "الرجاء تحديد خلاصة واحدة على الأقل", "Title": "عنوان", "Feed": "خلاصة", "Articles": "مقالات", "Action": "إجراء", "Unsubscribe": "إلغاء الاشتراك", "Articles inside this feed would be deleted": "سيتم حذف المقالات الموجودة داخل هذه الخلاصة", "Category cannot be empty": "لا يمكن أن تكون الفئة فارغة", "Category": "فئة", "Manage Categories": "إدارة الفئات", "Manage Feeds": "إدارة الخلاصات", "Please subscribe to atleast one feed to add category": "يرجى الاشتراك في خلاصة واحد على الأقل لإضافة فئة", "No feeds available": "لا توجد أي خلاصة", "Add new feed": "أضف خلاصة جديدة", "Disconnect Fever": "أفصل Fever", "Disconnect Self-hosted (Google Reader API)": "قطع الاتصال ذاتية الاستضافة (Google Reader API)", "Copy link": "انسخ الرابط", "Remove from favourite": "إزالة من المفضلة", "Edit Feedbin": "تعديل Feedbin", "Disconnect Feedbin": "افصل Feedbin", "Disconnect pocket": "افصل Pocket", "Disconnect Instapaper": "افصل Instapaper", "Copy feed link": "انسخ رابط الخلاصة", "Edit feed": "تعديل الخلاصة", "About Raven Reader": "حول ريفين ريدر", "Version": "إصدار", "Services": "خدمات", "Hide": "إخفاء", "Hide Others": "إخفاء الآخرين", "Show All": "عرض الكل", "Quit Raven Reader": "قم بإنهاء البرنامج", "Close Window": "أغلق النافذة", "Minimize": "تصغير", "Zoom": "تكبير", "Bring All to Front": "إحضار الكل إلى المقدمة", "Mark all articles as unread": "جعل جميع المقالات غير مقروءة", "Are you sure you want to mark all articles as unread?": "هل أنت متأكد من جعل جميع المقالات غير مقروءة؟", "Mark all unread": "جعل الجميع غير مقروء", "Article list actions": "إجراءات قائمة المقالات", "Language": "لغة" } ================================================ FILE: public/locales/ca/translation.json ================================================ { "All Feeds": "Totes les fonts", "Favourites": "Favorits", "Unread Articles": "Articles per llegir", "Recently Read": "Llegits recentment", "Recently Played": "Escoltats recentment", "Saved articles": "Articles guardats", "Show more": "Mostrar més", "Show less": "Mostrar menys", "Subscriptions": "Subscripcions", "Add": "Afegir", "Please select category": "Selecciona la categoria si us plau", "Add new category": "Afegir nova categoria", "Close": "Tancar", "Subscribe": "Subscriure", "No articles available": "No hi ha articles disponibles", "Load more": "Carregar més", "Subscriptions added from here would not be synced with your service": "Nota: Les subscripcions afegides des d'aquí no es sincronitzaran amb el teu servei", "Enter website or feed url": "Introduir una web o la url d'una font", "Enter new category": "Introduir una nova categoria", "Search": "Buscar", "Refresh All Feeds": "Refrescar totes les fonts", "Mark all as read": "Marcar tot com a llegit", "Settings": "Configuracions", "Preferences": "Preferències", "Keep read RSS items": "Mantenir les RSS llegides durant:", "Set refresh interval for news feed": "Establir l'interval de refresc per a nou contingut", "Choose appearance": "Triar aparença", "Oldest articles first": "Els articles més antics primer", "Disable images in Articles": "Deshabilitar les imatges als articles", "Full article view by default": "Visualitzar tot l'article per defecte", "Delete all feed, category and article data": "Eliminar totes les fonts, categories i articles", "Clear all data": "Netejar totes les dades", "Proxy Setting": "Configiració del Proxy", "Web Server (HTTP)": "Servidor Web (HTTP):", "Secure Web Server (HTTPS)": "Servidor Web Segur (HTTPS):", "Bypass proxy settings for these hosts & domains": "Ignorar la configuració del proxy per a aquests hosts i dominis:", "Set proxy & restart": "Establir el proxy i reiniciar", "Connect Instapaper": "Connecta't amb Instapaper", "Connect pocket": "Connecta't amb pocket", "Log into Instapaper": "Iniciar sessió a Instapaper", "Enter endpoint": "Afegeix l'endpoint", "Enter email": "Afegeix l'email", "Enter password": "Afegeix password", "Read it later services": "Serveis 'Read it later'", "Sharing": "Compartir", "Save articles to read it later services": "Gariudar articles a serveis 'Read it later'", "Instapaper": "Instapaper", "Connect": "Connectar", "Pocket": "Pocket", "RSS Services": "Serveis RSS", "Sync across device with RSS services": "Sincronitzar a través del dispositiu amb els serveis RSS.", "Only one service can be connected If you have local sources prior to connecting sync accounts that share same feed URLs, local articles will be removed": "Només es pot connectar un sol servei. S'eliminaran els articles locals si teniu URLs de fonts compartides amb els comptes que voleu sincronitzar.", "Cancel": "Cancel·lar", "Login": "Iniciar sessió", "OPML is a standard format to import or export feed subscriptions You can export OPML files from other readers and import it": "OPML és un format estàndard per importar o exportar subscripcions de fonts. Podeu exportar fitxers OPML d'altres lectors i importar-los.", "Import": "Importar", "Import Subscriptions from OPML file": "Import Subscriptions from OPML file", "Choose a file": "Choose a file...", "Edit Feed": "Edita la font", "Update": "Actualitzar", "Rename category": "Renombrar categoria", "Mark all articles as read": "Marcar tots els articles com a llegits", "Are you sure you want to mark all articles as read?": "Estas segur de marcar tots els articles com a llegits?", "Yes": "Si", "No": "No", "Full Content": "Tot el contingut", "Save article": "Gardar article", "View original": "Veure l'original", "Format Options": "Opcions de format", "Mark as unread": "Marcar com a no llegit", "Mark as read": "Marcar com a llegit", "Mark as unfavourite": "Eliminar de favorits", "Mark as favourite": "Marcar com a favorit", "Disconnect": "Desconnectar", "Sync Account": "Sincronitzar el compte", "Quit": "Sortir", "Edit": "Editar", "View": "Veure", "Add subscription": "Afegir subscripció", "Item": "Element", "Next item": "Següent element", "Previous item": "Element anterior", "Toggle read": "Commutar la lectura", "Toggle favourite": "Commutar favorit", "Mark all read": "Marcar tot com a llegit", "Save offline": "Gardar offline", "View in browser": "Veure al navegador", "Import and Export": "Importar i Exportar", "Import subscriptions": "Importar subscripcions", "Export subscriptions": "Exportar subscripcions", "Speech": "Dictar", "Start in tray": "Iniciar a la safata", "Automatically add to Recently": "Afegir automàticament a Recents", "Automatically add to Recently Read": "Afegir automàticament a LLegits Recentment", "Content preview": "Previsualitzar contingut", "Manage categories": "Administrar categories", "Manage feeds": "Administrar fonts", "Copy feed link": "Copiar l'enllaç", "Edit feed": "Editar les fonts", "Unsubscribe": "Cancel·lar la subscripció", "Connect Feedbin": "Connecta't amb Feedbin", "Log into Feedbin": "Iniciar sessió a Feedbin", "Connect Self-hosted (Google Reader API)": "Connecta't per autoallotjament(Google Reader API)", "Log into Self Hosted RSS Service": "Inicia sessió al servei RSS auto hostatjat", "Enter username": "Introdueix el nom d'usuari", "Connect Fever": "Connecta't amb Fever", "Log into Fever": "Inicia sessió a Fever", "No categories available": "No hi ha categoríes", "Feed in this categories would not be deleted": "El contingut d'aquestes categories no serà eliminat", "Please select atleast one feed": "Selecciona com a mínim una font si us plau", "Title": "Títol", "Feed": "Font", "Articles": "Articles", "Action": "Acció", "Articles inside this feed would be deleted": "Els articles d'aquesta font seran eliminats", "Category": "Categoria", "Manage Categories": "Administrar categories", "Manage Feeds": "Administrar fonts" } ================================================ FILE: public/locales/de/translation.json ================================================ { "All Feeds": "Alle Feeds", "Favourites": "Favoriten", "Unread Articles": "Ungelesene Artikel", "Recently Read": "Kürzlich gelesen", "Recently Played": "Kürzlich wiedergegeben", "Saved articles": "Gespeicherte Artikel", "Show more": "Mehr anzeigen", "Show less": "Weniger anzeigen", "Subscriptions": "Abonnements", "Add": "Hinzufügen", "Please select category": "Kategorie auswählen", "Add new category": "Neue Kategorie hinzufügen", "Close": "Schließen", "Subscribe": "Abonnieren", "No articles available": "Keine Artikel verfügbar", "Load more": "Mehr laden", "Subscriptions added from here would not be synced with your service": "Anmerkung: Abonnements von hier würden nicht mit Ihrem Dienst synchronisiert werden.", "Enter website or feed url": "Webseite oder Feed-URL eingeben", "Enter new category": "Neue Kategorie eingeben", "Search": "Suchen", "Refresh All Feeds": "Alle Feeds aktualisieren", "Mark all as read": "Alles als gelesen markieren", "Settings": "Einstellungen", "Preferences": "Einstellungen", "Keep read RSS items": "Gelesene RSS-Elemente behalten", "Set refresh interval for news feed": "Aktualisierungs-Intervall für Feed setzen", "Choose appearance": "Aussehen wählen", "Oldest articles first": "Älteste Artikel zuerst", "Disable images in Articles": "Bilder in Artikeln deaktivieren", "Full article view by default": "Vollständige Artikel-Ansicht standardmäßig anzeigen", "Delete all feed, category and article data": "Alle Daten von Feeds, Kategorien und Artikeln löschen", "Clear all data": "Alle Daten löschen", "Proxy Setting": "Proxy-Einstellungen", "Web Server (HTTP)": "Web-Server (HTTP):", "Secure Web Server (HTTPS)": "Sicherer Web-Server (HTTPS):", "Bypass proxy settings for these hosts & domains": "Proxy-Einstellungen für diese Hosts & Domains umgehen:", "Set proxy & restart": "Proxy einstellen & neu starten", "Connect Instapaper": "Mit Instapaper verbinden", "Connect pocket": "Mit Pocket verbinden", "Log into Instapaper": "Bei Instapaper anmelden", "Enter endpoint": "Endpoint eingeben", "Enter email": "E-Mail eingeben", "Enter password": "Passwort eingeben", "Read it later services": "Später-Lesen Dienste", "Sharing": "Teilen", "Save articles to read it later services": "Artikel in Diensten zum später Lesen speichern", "Instapaper": "Instapaper", "Connect": "Verbinden", "Pocket": "Pocket", "RSS Services": "RSS-Dienste", "Sync across device with RSS services": "Auf Geräte mit RSS-Diensten snychronisieren.", "Only one service can be connected If you have local sources prior to connecting sync accounts that share same feed URLs, local articles will be removed": "Es kann nur ein Dienst verbunden werden. Artikel von lokalen Quellen werden beim Verbinden von Synchronisations-Konten entfernt, wenn sie die selben Feed-URLs teilen.", "Invalid credentials": "Ungültige Zugangsdaten", "Cancel": "Abbrechen", "Login": "Anmelden", "OPML is a standard format to import or export feed subscriptions You can export OPML files from other readers and import it": "OPML ist ein standardisiertes Format für den Import oder Export von Abonnements. Sie können von anderen Readern OPML-Dateien exportieren und diese dann importieren.", "Import": "Import", "Import Subscriptions from OPML file": "Abonnements aus einer OPML-Datei importieren", "Choose a file": "Datei wählen...", "Edit Feed": "Feed bearbeiten", "Update": "Aktualisieren", "Rename category": "Kategorie umbenennen", "Mark all articles as read": "Alle Artikel als gelesen markieren", "Are you sure you want to mark all articles as read?": "Möchten Sie wirklich alle Artikel als gelesen markieren?", "Yes": "Ja", "No": "Nein", "Full Content": "Vollständiger Inhalt", "Save article": "Artikel speichern", "View original": "Original ansehen", "Format Options": "Format-Einstellungen", "Mark as unread": "Als ungelesen markieren", "Mark as read": "Als gelesen markieren", "Mark as unfavourite": "Aus Favoriten entfernen", "Mark as favourite": "Als Favorit markieren", "Disconnect": "Verbindung trennen", "Sync Account": "Konto synchronisieren", "Quit": "Beenden", "Edit": "Bearbeiten", "View": "Anzeigen", "Add subscription": "Abonnement hinzufügen", "Item": "Eintrag", "Next item": "Nächster Eintrag", "Previous item": "Vorheriger Eintrag", "Toggle read": "Gelesen-Status umschalten", "Toggle favourite": "Favoriten-Status umschalten", "Mark all read": "Alle als gelesen markieren", "Save offline": "Offline speichern", "View in browser": "Im Browser ansehen", "Import and Export": "Import und Export", "Import subscriptions": "Abonnements importieren", "Export subscriptions": "Abonnements exportieren", "Speech": "Sprache", "Start in tray": "In Startleiste starten", "Automatically add to Recently": "Automatisch zu Kürzlich hinzufügen", "Automatically add to Recently Read": "Automatisch zu Kürzlich Gelesen hinzufügen", "Content preview": "Inhaltsvorschau", "Manage categories": "Kategorien verwalten", "Manage feeds": "Feeds verwalten", "Connect Feedbin": "Mit Feedbin verbinden", "Log into Feedbin": "Bei Feedbin anmelden", "Connect Self-hosted (Google Reader API)": "Mit selbst gehostetem Dienst (Google Reader API) verbinden", "Log into Self Hosted RSS Service": "Bei selbst gehostetem RSS-Dienst anmelden", "Enter username": "Benutzername eingeben", "Connect Fever": "Mit Fever verbinden", "Log into Fever": "Bei Fever anmelden", "No categories available": "Keine Kategorien vorhanden", "Feed in this categories would not be deleted": "Feed in diesen Kategorien würde nicht gelöscht", "Please select atleast one feed": "Bitte mindestens einen Feed wählen", "Title": "Titel", "Feed": "Feed", "Articles": "Artikel", "Action": "Aktion", "Unsubscribe": "Abbestellen", "Articles inside this feed would be deleted": "Artikel in diesem Feed würden gelöscht", "Category cannot be empty": { "": "Kategorie kann nicht leer sein." }, "Category": "Kategorie", "Manage Categories": "Kategorien verwalten", "Manage Feeds": "Feeds verwalten", "Please subscribe to atleast one feed to add category": "Bitte abonnieren Sie mindestens einen Feed zum Hinzufügen der Kategorie", "No feeds available": "Keine Feeds verfügbar", "Add new feed": "Neuen Feed hinzufügen", "Disconnect Fever": "Fever trennen", "Disconnect Self-hosted (Google Reader API)": "Selbst gehosteten Dienst (Google Reader API) trennen", "Copy link": "Link kopieren", "Remove from favourite": "Von Favoriten entfernen", "Edit Feedbin": "Feedbin bearbeiten", "Disconnect Feedbin": "Feedbin trennen", "Disconnect pocket": "Pocket trennen", "Disconnect Instapaper": "Instapaper trennen", "Copy feed link": "Feed-Link kopieren", "Edit feed": "Feed bearbeiten", "About Raven Reader": "Über Raven Reader", "Version": "Version", "Services": "Dienste", "Hide": "Verbergen", "Hide Others": "Andere verbergen", "Show All": "Alle anzeigen", "Quit Raven Reader": "Raven Reader beenden", "Close Window": "Fenster schließen", "Minimize": "Minimieren", "Zoom": "Maximieren", "Bring All to Front": "Alle nach vorne bringen", "Mark all articles as unread": "Alle Artikel als ungelesen markieren", "Are you sure you want to mark all articles as unread?": "Möchten Sie wirklich alle Artikel als ungelesen markieren?", "Mark all unread": "Alle als ungelesen markieren", "Article list actions": "Artikel-Listen Aktionen", "Language": "Sprache" } ================================================ FILE: public/locales/en/translation.json ================================================ { "All Feeds": "All Feeds", "Favourites": "Favourites", "Unread Articles": "Unread Articles", "Recently Read": "Recently Read", "Recently Played": "Recently Played", "Saved articles": "Saved articles", "Show more": "Show more", "Show less": "Show less", "Subscriptions": "Subscriptions", "Add": "Add", "Please select category": "Please select category", "Add new category": "Add new category", "Close": "Close", "Subscribe": "Subscribe", "No articles available": "No articles available", "Load more": "Load more", "Subscriptions added from here would not be synced with your service": "Note: Subscriptions added from here would not be synced with your service.", "Enter website or feed url": "Enter website or feed url", "Enter new category": "Enter new category", "Search": "Search", "Refresh All Feeds": "Refresh All Feeds", "Mark all as read": "Mark all as read", "Settings": "Settings", "Preferences": "Preferences", "Keep read RSS items": "Keep read RSS items", "Set refresh interval for news feed": "Set refresh interval for news feed", "Choose appearance": "Choose appearance", "Oldest articles first": "Oldest articles first", "Disable images in Articles": "Disable images in Articles", "Full article view by default": "Full article view by default", "View original by default": "View original by default", "Delete all feed, category and article data": "Delete all feed, category and article data", "Clear all data": "Clear all data", "Proxy Setting": "Proxy Setting", "Web Server (HTTP)": "Web Server (HTTP):", "Secure Web Server (HTTPS)": "Secure Web Server (HTTPS):", "Bypass proxy settings for these hosts & domains": "Bypass proxy settings for these hosts & domains:", "Set proxy & restart": "Set proxy & restart", "Connect Instapaper": "Connect Instapaper", "Connect pocket": "Connect pocket", "Log into Instapaper": "Log into Instapaper", "Enter endpoint": "Enter endpoint", "Enter email": "Enter email", "Enter password": "Enter password", "Read it later services": "Read it later services", "Sharing": "Sharing", "Save articles to read it later services": "Save articles to read it later services", "Instapaper": "Instapaper", "Connect": "Connect", "Pocket": "Pocket", "RSS Services": "RSS Services", "Sync across device with RSS services": "Sync across device with RSS services.", "Only one service can be connected If you have local sources prior to connecting sync accounts that share same feed URLs, local articles will be removed": "Only one service can be connected. If you have local sources prior to connecting sync accounts that share same feed URLs, local articles will be removed.", "Invalid credentials": "Invalid credentials", "Cancel": "Cancel", "Login": "Login", "OPML is a standard format to import or export feed subscriptions You can export OPML files from other readers and import it": "OPML is a standard format to import or export feed subscriptions. You can export OPML files from other readers and import it.", "Import": "Import", "Import Subscriptions from OPML file": "Import Subscriptions from OPML file", "Choose a file": "Choose a file...", "Edit Feed": "Edit Feed", "Update": "Update", "Rename category": "Rename category", "Mark all articles as read": "Mark all articles as read", "Are you sure you want to mark all articles as read?": "Are you sure you want to mark all articles as read?", "Yes": "Yes", "No": "No", "Full Content": "Full Content", "Save article": "Save article", "View original": "View original", "Format Options": "Format Options", "Mark as unread": "Mark as unread", "Mark as read": "Mark as read", "Mark as unfavourite": "Mark as unfavourite", "Mark as favourite": "Mark as favourite", "Disconnect": "Disconnect", "Sync Account": "Sync Account", "Quit": "Quit", "Edit": "Edit", "View": "View", "Add subscription": "Add subscription", "Item": "Item", "Next item": "Next item", "Previous item": "Previous item", "Toggle read": "Toggle read", "Toggle favourite": "Toggle favourite", "Mark all read": "Mark all read", "Save offline": "Save offline", "View in browser": "View in browser", "Import and Export": "Import and Export", "Import subscriptions": "Import subscriptions", "Export subscriptions": "Export subscriptions", "Speech": "Speech", "Start in tray": "Start in tray", "Automatically add to Recently": "Automatically add to Recently", "Automatically add to Recently Read": "Automatically add to Recently Read", "Content preview": "Content preview", "Manage categories": "Manage categories", "Manage feeds": "Manage feeds", "Connect Feedbin": "Connect Feedbin", "Log into Feedbin": "Log into Feedbin", "Connect Self-hosted (Google Reader API)": "Connect Self-hosted (Google Reader API)", "Log into Self Hosted RSS Service": "Log into Self Hosted RSS Service", "Enter username": "Enter username", "Connect Fever": "Connect Fever", "Log into Fever": "Log into Fever", "No categories available": "No categories available", "Feed in this categories would not be deleted": "Feed in this categories would not be deleted", "Please select atleast one feed": "Please select atleast one feed", "Title": "Title", "Feed": "Feed", "Articles": "Articles", "Action": "Action", "Unsubscribe": "Unsubscribe", "Articles inside this feed would be deleted": "Articles inside this feed would be deleted", "Category cannot be empty": { "": "Category cannot be empty." }, "Category": "Category", "Manage Categories": "Manage Categories", "Manage Feeds": "Manage Feeds", "Please subscribe to atleast one feed to add category": "Please subscribe to atleast one feed to add category", "No feeds available": "No feeds available", "Add new feed": "Add new feed", "Disconnect Fever": "Disconnect Fever", "Disconnect Self-hosted (Google Reader API)": "Disconnect Self-hosted (Google Reader API)", "Copy link": "Copy link", "Remove from favourite": "Remove from favourite", "Edit Feedbin": "Edit Feedbin", "Disconnect Feedbin": "Disconnect Feedbin", "Disconnect pocket": "Disconnect pocket", "Disconnect Instapaper": "Disconnect Instapaper", "Copy feed link": "Copy feed link", "Edit feed": "Edit feed", "About Raven Reader": "About Raven Reader", "Version": "Version", "Services": "Services", "Hide": "Hide", "Hide Others": "Hide Others", "Show All": "Show All", "Quit Raven Reader": "Quit Raven Reader", "Close Window": "Close Window", "Minimize": "Minimize", "Zoom": "Zoom", "Bring All to Front": "Bring All to Front", "Mark all articles as unread": "Mark all articles as unread", "Are you sure you want to mark all articles as unread?": "Are you sure you want to mark all articles as unread?", "Mark all unread": "Mark all unread", "Article list actions": "Article list actions", "Language": "Language" } ================================================ FILE: public/locales/en-US/translation.json ================================================ { "All Feeds": "All Feeds", "Favourites": "Favourites", "Unread Articles": "Unread Articles", "Recently Read": "Recently Read", "Recently Played": "Recently Played", "Saved articles": "Saved articles", "Show more": "Show more", "Show less": "Show less", "Subscriptions": "Subscriptions", "Add": "Add", "Please select category": "Please select category", "Add new category": "Add new category", "Close": "Close", "Subscribe": "Subscribe", "No articles available": "No articles available", "Load more": "Load more", "Subscriptions added from here would not be synced with your service": "Note: Subscriptions added from here would not be synced with your service.", "Enter website or feed url": "Enter website or feed url", "Enter new category": "Enter new category", "Search": "Search", "Refresh All Feeds": "Refresh All Feeds", "Mark all as read": "Mark all as read", "Settings": "Settings", "Preferences": "Preferences", "Keep read RSS items": "Keep read RSS items", "Set refresh interval for news feed": "Set refresh interval for news feed", "Choose appearance": "Choose appearance", "Oldest articles first": "Oldest articles first", "Disable images in Articles": "Disable images in Articles", "Full article view by default": "Full article view by default", "View original by default": "View original by default", "Delete all feed, category and article data": "Delete all feed, category and article data", "Clear all data": "Clear all data", "Proxy Setting": "Proxy Setting", "Web Server (HTTP)": "Web Server (HTTP):", "Secure Web Server (HTTPS)": "Secure Web Server (HTTPS):", "Bypass proxy settings for these hosts & domains": "Bypass proxy settings for these hosts & domains:", "Set proxy & restart": "Set proxy & restart", "Connect Instapaper": "Connect Instapaper", "Connect pocket": "Connect pocket", "Log into Instapaper": "Log into Instapaper", "Enter endpoint": "Enter endpoint", "Enter email": "Enter email", "Enter password": "Enter password", "Read it later services": "Read it later services", "Sharing": "Sharing", "Save articles to read it later services": "Save articles to read it later services", "Instapaper": "Instapaper", "Connect": "Connect", "Pocket": "Pocket", "RSS Services": "RSS Services", "Sync across device with RSS services": "Sync across device with RSS services.", "Only one service can be connected If you have local sources prior to connecting sync accounts that share same feed URLs, local articles will be removed": "Only one service can be connected. If you have local sources prior to connecting sync accounts that share same feed URLs, local articles will be removed.", "Invalid credentials": "Invalid credentials", "Cancel": "Cancel", "Login": "Login", "OPML is a standard format to import or export feed subscriptions You can export OPML files from other readers and import it": "OPML is a standard format to import or export feed subscriptions. You can export OPML files from other readers and import it.", "Import": "Import", "Import Subscriptions from OPML file": "Import Subscriptions from OPML file", "Choose a file": "Choose a file...", "Edit Feed": "Edit Feed", "Update": "Update", "Rename category": "Rename category", "Mark all articles as read": "Mark all articles as read", "Are you sure you want to mark all articles as read?": "Are you sure you want to mark all articles as read?", "Yes": "Yes", "No": "No", "Full Content": "Full Content", "Save article": "Save article", "View original": "View original", "Format Options": "Format Options", "Mark as unread": "Mark as unread", "Mark as read": "Mark as read", "Mark as unfavourite": "Mark as unfavourite", "Mark as favourite": "Mark as favourite", "Disconnect": "Disconnect", "Sync Account": "Sync Account", "Quit": "Quit", "Edit": "Edit", "View": "View", "Add subscription": "Add subscription", "Item": "Item", "Next item": "Next item", "Previous item": "Previous item", "Toggle read": "Toggle read", "Toggle favourite": "Toggle favourite", "Mark all read": "Mark all read", "Save offline": "Save offline", "View in browser": "View in browser", "Import and Export": "Import and Export", "Import subscriptions": "Import subscriptions", "Export subscriptions": "Export subscriptions", "Speech": "Speech", "Start in tray": "Start in tray", "Automatically add to Recently": "Automatically add to Recently", "Automatically add to Recently Read": "Automatically add to Recently Read", "Content preview": "Content preview", "Manage categories": "Manage categories", "Manage feeds": "Manage feeds", "Connect Feedbin": "Connect Feedbin", "Log into Feedbin": "Log into Feedbin", "Connect Self-hosted (Google Reader API)": "Connect Self-hosted (Google Reader API)", "Log into Self Hosted RSS Service": "Log into Self Hosted RSS Service", "Enter username": "Enter username", "Connect Fever": "Connect Fever", "Log into Fever": "Log into Fever", "No categories available": "No categories available", "Feed in this categories would not be deleted": "Feed in this categories would not be deleted", "Please select atleast one feed": "Please select atleast one feed", "Title": "Title", "Feed": "Feed", "Articles": "Articles", "Action": "Action", "Unsubscribe": "Unsubscribe", "Articles inside this feed would be deleted": "Articles inside this feed would be deleted", "Category cannot be empty": { "": "Category cannot be empty." }, "Category": "Category", "Manage Categories": "Manage Categories", "Manage Feeds": "Manage Feeds", "Please subscribe to atleast one feed to add category": "Please subscribe to atleast one feed to add category", "No feeds available": "No feeds available", "Add new feed": "Add new feed", "Disconnect Fever": "Disconnect Fever", "Disconnect Self-hosted (Google Reader API)": "Disconnect Self-hosted (Google Reader API)", "Copy link": "Copy link", "Remove from favourite": "Remove from favourite", "Edit Feedbin": "Edit Feedbin", "Disconnect Feedbin": "Disconnect Feedbin", "Disconnect pocket": "Disconnect pocket", "Disconnect Instapaper": "Disconnect Instapaper", "Copy feed link": "Copy feed link", "Edit feed": "Edit feed", "About Raven Reader": "About Raven Reader", "Version": "Version", "Services": "Services", "Hide": "Hide", "Hide Others": "Hide Others", "Show All": "Show All", "Quit Raven Reader": "Quit Raven Reader", "Close Window": "Close Window", "Minimize": "Minimize", "Zoom": "Zoom", "Bring All to Front": "Bring All to Front", "Mark all articles as unread": "Mark all articles as unread", "Are you sure you want to mark all articles as unread?": "Are you sure you want to mark all articles as unread?", "Mark all unread": "Mark all unread", "Article list actions": "Article list actions", "Language": "Language" } ================================================ FILE: public/locales/en-US/translation.missing.json ================================================ { "Language": "Language" } ================================================ FILE: public/locales/es/translation.json ================================================ { "All Feeds": "Todas las fuentes", "Favourites": "Favoritos", "Unread Articles": "Artículos sin leer", "Recently Read": "Leídos recientemente", "Recently Played": "Reproducido recientemente", "Saved articles": "Artículos guardados", "Show more": "Mostrar más", "Show less": "Mostrar menos", "Subscriptions": "Suscripciones", "Add": "Agregar", "Please select category": "Por favor, elija una categoría", "Add new category": "Agregar nueva categoría", "Close": "Cerrar", "Subscribe": "Suscribirse", "No articles available": "No hay artículos disponibles", "Load more": "Cargar más", "Subscriptions added from here would not be synced with your service": "Nota: Las suscripciones agregadas desde aquí no se sincronizarán con su servicio.", "Enter website or feed url": "Ingrese un website o url de fuente", "Enter new category": "Ingrese nueva categoría", "Search": "Buscar", "Refresh All Feeds": "Actualizar todas las fuentes", "Mark all as read": "Marcar todo como leído", "Settings": "Ajustes", "Preferences": "Preferencias", "Keep read RSS items": "Conservar ítems RSS leídos", "Set refresh interval for news feed": "Intervalo de actualización para nuevas fuentes", "Choose appearance": "Elegir apariencia", "Oldest articles first": "Artículos antiguos primero", "Disable images in Articles": "Deshabilitar imágenes en artículos", "Full article view by default": "Vista completa del artículo por defecto", "View original by default": "Vista original por defecto", "Delete all feed, category and article data": "Eliminar todas las fuentes, categorías y datos de artículos", "Clear all data": "Limpiar todos los datos", "Proxy Setting": "Ajustes de proxy", "Web Server (HTTP)": "Servidor Web (HTTP):", "Secure Web Server (HTTPS)": "Servidor Web Seguro (HTTPS):", "Bypass proxy settings for these hosts & domains": "Ajustes de bypass proxy para estos hosts y dominios:", "Set proxy & restart": "Establecer proxy y reiniciar", "Connect Instapaper": "Conectar Instapaper", "Connect pocket": "Conectar pocket", "Log into Instapaper": "Iniciar sesión en Instapaper", "Enter endpoint": "Ingresar endpoint", "Enter email": "Ingresar email", "Enter password": "Ingresar password", "Read it later services": "Read it later services", "Sharing": "Compartir", "Save articles to read it later services": "Guardar artículos en servicios de \"leer después\"", "Instapaper": "Instapaper", "Connect": "Conectar", "Pocket": "Pocket", "RSS Services": "Servicios RSS", "Sync across device with RSS services": "Sincronizar entre dispositivos con servicios RSS.", "Only one service can be connected If you have local sources prior to connecting sync accounts that share same feed URLs, local articles will be removed": "Only one service can be connected. If you have local sources prior to connecting sync accounts that share same feed URLs, local articles will be removed.", "Invalid credentials": "Credenciales inválidas", "Cancel": "Cancelar", "Login": "Login", "OPML is a standard format to import or export feed subscriptions You can export OPML files from other readers and import it": "OPML es un formato estándar para importar o exportar fuentes de suscripciones. Puede exportar archivos OPML desde otros lectores e importarlos.", "Import": "Importar", "Import Subscriptions from OPML file": "Importar suscripciones desde archivo OPML", "Choose a file": "Elegir archivo...", "Edit Feed": "Editar Fuente", "Update": "Actualizar", "Rename category": "Renombrar categoría", "Mark all articles as read": "Marcar todos los artículos como leídos", "Are you sure you want to mark all articles as read?": "Está seguro que quiere marcar todos los artículos como leídos?", "Yes": "Si", "No": "No", "Full Content": "Contenido completo", "Save article": "Guardar artículo", "View original": "Ver original", "Format Options": "Opciones de formato", "Mark as unread": "Marcar como no leído", "Mark as read": "Marcar como leído", "Mark as unfavourite": "Eliminar de favoritos", "Mark as favourite": "Agregar a favoritos", "Disconnect": "Desconectar", "Sync Account": "Sincronizar cuenta", "Quit": "Salir", "Edit": "Editar", "View": "Ver", "Add subscription": "Agregar suscripción", "Item": "Ítem", "Next item": "Próximo ítem", "Previous item": "Ítem anterior", "Toggle read": "Alternar como leído", "Toggle favourite": "Alternar como favorito", "Mark all read": "Marcar todos como leídos", "Save offline": "Guardar versión offline", "View in browser": "Ver en el navegador", "Import and Export": "Importar y Exportar", "Import subscriptions": "Importar suscripciones", "Export subscriptions": "Exportar suscripciones", "Speech": "Discurso", "Start in tray": "Iniciar en la bandeja", "Automatically add to Recently": "Automáticamente agregar a recientes", "Automatically add to Recently Read": "Automáticamente agregar a Leídos recientemente", "Content preview": "Vista previa de contenido", "Manage categories": "Administrar categorías", "Manage feeds": "Administrar fuentes", "Connect Feedbin": "Conectar a Feedbin", "Log into Feedbin": "Iniciar sesión en Feedbin", "Connect Self-hosted (Google Reader API)": "Conectar a Self-hosted (Google Reader API)", "Log into Self Hosted RSS Service": "Iniciar sesión en Self Hosted RSS Service", "Enter username": "Ingresar nombre de usuario", "Connect Fever": "Conectar a Fever", "Log into Fever": "Iniciar sesión en Fever", "No categories available": "No hay categorías disponibles", "Feed in this categories would not be deleted": "Las fuentes en estas categorías no serán borradas", "Please select atleast one feed": "Por favor seleccione al menos una fuente", "Title": "Título", "Feed": "Fuente", "Articles": "Artículos", "Action": "Acción", "Unsubscribe": "Desuscribirse", "Articles inside this feed would be deleted": "Los artículos en esta categoría serán borrados", "Category cannot be empty": { "": "La categoría no pueded estar vacía." }, "Category": "Categoría", "Manage Categories": "Administrar Categorías", "Manage Feeds": "Administrar Fuentes", "Please subscribe to atleast one feed to add category": "Por favor suscribase al menos en una fuente para agregar una categoría", "No feeds available": "No hay fuentes disponibles", "Add new feed": "Agregar nueva fuente", "Disconnect Fever": "Desconectar Fever", "Disconnect Self-hosted (Google Reader API)": "Desconectar Self-hosted (Google Reader API)", "Copy link": "Copiar enlace", "Remove from favourite": "Eliminar de favoritos", "Edit Feedbin": "Editar Feedbin", "Disconnect Feedbin": "Desconectar Feedbin", "Disconnect pocket": "Desconectar pocket", "Disconnect Instapaper": "Desconectar Instapaper", "Copy feed link": "Copiar enlace de fuente", "Edit feed": "Editar fuente", "About Raven Reader": "Acerca de Raven Reader", "Version": "Versión", "Services": "Servicios", "Hide": "Ocultar", "Hide Others": "Ocultar Otros", "Show All": "Mostrar Todo", "Quit Raven Reader": "Salir de Raven Reader", "Close Window": "Cerrar Ventana", "Minimize": "Minimizar", "Zoom": "Zoom", "Bring All to Front": "Traer Todo al Frente", "Mark all articles as unread": "Marcar todos los artículos como no leídos", "Are you sure you want to mark all articles as unread?": "Está seguro que quiere marcar todos los artículos como no leídos?", "Mark all unread": "Marcar todo como no leído", "Article list actions": "Acciones de lista de artículos", "Language": "Idioma", "Add category": "Agregar categoría", "Add Category": "Agregar Categoría", "Subscription title updated": { "": "Título de suscripción actualizado." }, "Rename folder": "Renombrar carpeta", "Delete": "Borrar", "Feeds":"Fuentes" } ================================================ FILE: public/locales/fr/translation.json ================================================ { "About Raven Reader": "À propos de Raven Reader", "Action": "Action", "Add new feed": "Ajouter un nouveau flux", "Are you sure you want to mark all articles as unread?": "Êtes-vous sûr de vouloir marquer tous les articles comme non lus ?", "Article list actions": "Liste d'actions", "Articles": "Articles", "Articles inside this feed would be deleted": "Les articles contenus dans ce flux seront supprimés", "Automatically add to Recently Read": "Ajouter automatiquement à Lu récemment", "Bring All to Front": "Tout mettre en avant", "Category": "Catégorie", "Category cannot be empty": { "": "Les catégories ne peuvent êtres vides" }, "Close Window": "Fermer la fenêtre", "Connect Feedbin": "Connecter Feedbin", "Connect Fever": "Connecter Fever", "Connect Self-hosted (Google Reader API)": "Connecter server auto-hébergé (Google Reader API)", "Content preview": "Aperçu du contenu", "Copy feed link": "Copier le lien de flux", "Copy link": "Copier lien", "Disconnect Feedbin": "Déconnecter Feedbin", "Disconnect Fever": "Déconnecter Fever", "Disconnect Instapaper": "Déconnecter Instapaper", "Disconnect pocket": "Déconnecter pocket", "Disconnect Self-hosted (Google Reader API)": "Déconnecter service auto-hébergé (Google Reader API)", "Edit feed": "Éditer le flux", "Edit Feedbin": "Éditer Feedbin", "Enter username": "Entrer le bom d'utilisateur", "Feed": "Flux", "Feed in this categories would not be deleted": "Les flux dans cette catégorie ne seront pas supprimés", "Hide": "Cacher", "Hide Others": "Cacher Autres", "Language": "Langues", "Log into Feedbin": "Se connecter à Feedbin", "Log into Fever": "Se connecter à Fever", "Log into Self Hosted RSS Service": "Se connecter au Service RSS Auto-hébergé", "Manage categories": "Gérer les catégories", "Manage Categories": "Gérer les Catégories", "Manage feeds": "Gérer les flux", "Manage Feeds": "Gérer les Flux", "Mark all articles as unread": "Marquer tous les articles comme non lus", "Mark all unread": "Tout marquer comme non lus", "Minimize": "Minimiser", "No categories available": "Aucun catégorie disponible", "No feeds available": "Aucun flux disponible", "Please select atleast one feed": "Veuillez sélectionner au moins un flux", "Please subscribe to atleast one feed to add category": "Veuillez vous abonner à au moins un flux pour ajouter un catégorie", "Quit Raven Reader": "Quitter Raven Reader", "Remove from favourite": "Supprimer des favoris", "Services": "Services", "Show All": "Tout Afficher", "Start in tray": "Démarrer dans la zone de notification", "Title": "Titre", "Unsubscribe": "Se désabonner", "Version": "Version", "View original by default": "Voir l'original par défaut", "Zoom": "Zoom", "All Feeds": "Tous les flux", "Favourites": "Favoris", "Unread Articles": "Articles non lus", "Recently Read": "Lu récemment", "Recently Played": "Joué récemment", "Saved articles": "Articles sauvegardés", "Show more": "Montrer plus", "Show less": "Montrer moins", "Subscriptions": "Abonnements", "Add": "Ajouter", "Please select category": "Veuillez choisir une catégorie", "Add new category": "Ajouter une nouvelle catégorie", "Close": "Fermer", "Subscribe": "S'abonner", "No articles available": "Aucun article disponible", "Load more": "Charger plus", "Subscriptions added from here would not be synced with your service": "Note : Les abonnements ajoutés à partir d'ici ne seraient pas synchronisés avec votre service.", "Enter website or feed url": "Entrez l'url du site web ou du flux", "Enter new category": "Entrez dans une nouvelle catégorie", "Search": "Recherchez", "Refresh All Feeds": "Rafraîchir tous les flux", "Mark all as read": "Tout marquer comme lu", "Settings": "Paramètres", "Preferences": "Préférences", "Keep read RSS items": "Tenez-vous au courant des articles RSS", "Set refresh interval for news feed": "Définir l'intervalle de rafraîchissement du flux d'informations", "Choose appearance": "Choisir l'apparence", "Oldest articles first": "Les articles les plus anciens en premier", "Disable images in Articles": "Désactiver les images dans les articles", "Full article view by default": "Affichage de l'article complet par défaut", "Delete all feed, category and article data": "Supprimer les données de flux, de catégorie et d'article", "Clear all data": "Effacer toutes les données", "Proxy Setting": "Paramètres du proxy", "Web Server (HTTP)": "Serveur web (HTTP) :", "Secure Web Server (HTTPS)": "Serveur Web sécurisé (HTTPS) :", "Bypass proxy settings for these hosts & domains": "Contournez les paramètres de proxy pour ces hôtes et domaines :", "Set proxy & restart": "Définir le proxy et redémarrer", "Connect Instapaper": "Se connecter à Instapaper", "Connect pocket": "Se connecter à Pocket", "Log into Instapaper": "Se connecter à Instapaper", "Enter endpoint": "Entrer le point final", "Enter email": "Entrez votre adresse électronique", "Enter password": "Entrez le mot de passe", "Read it later services": "Services de lecture différée", "Sharing": "Partage", "Save articles to read it later services": "Sauvegarder les articles vers un service de lecture différée", "Instapaper": "Instapaper", "Connect": "Connexion", "Pocket": "Pocket", "RSS Services": "Services RSS", "Sync across device with RSS services": "Synchronisez votre appareil avec les services RSS.", "Only one service can be connected If you have local sources prior to connecting sync accounts that share same feed URLs, local articles will be removed": "Un seul service peut être connecté. Si, avant de connecter des comptes de synchronisation, vous disposez de sources locales qui partagent les mêmes URL de flux, les articles locaux seront supprimés.", "Invalid credentials": "Pouvoirs non valables", "Cancel": "Annuler", "Login": "Connexion", "OPML is a standard format to import or export feed subscriptions You can export OPML files from other readers and import it": "L'OPML est un format standard pour importer ou exporter des abonnements de flux. Vous pouvez exporter des fichiers OPML à partir d'autres lecteurs et les importer.", "Import": "Importer", "Import Subscriptions from OPML file": "Importer des abonnements à partir du fichier OPML", "Choose a file": "Choisissez un fichier...", "Edit Feed": "Modifier le flux", "Update": "Mise à jour", "Rename category": "Renommer la catégorie", "Mark all articles as read": "Marquer tous les articles comme lus", "Are you sure you want to mark all articles as read?": "Êtes-vous sûr de vouloir marquer tous les articles comme lus ?", "Yes": "Oui", "No": "Non", "Full Content": "Contenu intégral", "Save article": "Sauvegarder l'article", "View original": "Voir l'original", "Format Options": "Options de format", "Mark as unread": "Marquer comme non lu", "Mark as read": "Marquer comme lu", "Mark as unfavourite": "Retirer des favoris", "Mark as favourite": "Marquer comme favori", "Disconnect": "déconnecter", "Sync Account": "Compte de synchronisation", "Quit": "Quitter", "Edit": "Éditer", "View": "Affichage", "Add subscription": "Ajouter un abonnement", "Item": "Élément", "Next item": "Élément suivant", "Previous item": "Élément précédent", "Toggle read": "Basculer pour lire", "Toggle favourite": "Basculer le favori", "Mark all read": "Marquer tout comme lu", "Save offline": "Sauvegarder hors ligne", "View in browser": "Afficher dans le navigateur", "Import and Export": "Importation et exportation", "Import subscriptions": "Importer des abonnements", "Export subscriptions": "Exporter des abonnements", "Speech": "Discours", "Automatically add to Recently": "Ajouter automatiquement à Récemment" } ================================================ FILE: public/locales/it/translation.json ================================================ { "All Feeds": "Tutte le fonti", "Favourites": "Preferiti", "Unread Articles": "Articoli non letti", "Recently Read": "Letti di recente", "Recently Played": "Riprodotti di recente", "Saved articles": "Articoli salvati", "Show more": "Mostra di più", "Show less": "Mostra di meno", "Subscriptions": "Sottoscrizioni", "Add": "Aggiungi", "Please select category": "Seleziona categoria", "Add new category": "Aggiungi nuova categoria", "Close": "Chiudi", "Subscribe": "Sottoscrivi", "No articles available": "Nessun articolo disponibile", "Load more": "Carica di più", "Subscriptions added from here would not be synced with your service": "Gli abbonamenti aggiunti da qui non verrebbero sincronizzati con il tuo servizio", "Enter website or feed url": "Inserisci il sito internet o l'URL della fonte", "Enter new category": "Inserisci nuova categoria", "Search": "Ricerca", "Refresh All Feeds": "Aggiorna tutte le fonti", "Mark all as read": "Segna tutti come letti", "Settings": "Impostazioni", "Preferences": "Preferenze", "Keep read RSS items": "Continua a leggere gli elementi RSS", "Set refresh interval for news feed": "Imposta l'intervallo di aggiornamento per le fonti di notizie", "Choose appearance": "Scegli l'aspetto", "Oldest articles first": "Prima gli articoli più vecchi", "Disable images in Articles": "Disabilita le immagini negli articoli", "Full article view by default": "Visualizzazione articolo completa per impostazione predefinita", "Delete all feed, category and article data": "Elimina tutti i dati di fonti, categorie e articoli", "Clear all data": "Cancella tutti i dati", "Proxy Setting": "Impostazioni proxy", "Web Server (HTTP)": "Servente Web (HTTP)", "Secure Web Server (HTTPS)": "Servente Web sicuro (HTTPS)", "Bypass proxy settings for these hosts & domains": "Ignora le impostazioni del proxy per questi domini", "Set proxy & restart": "Imposta proxy e riavvia", "Connect Instapaper": "Connetti Instapaper", "Connect pocket": "Collega Pocket", "Log into Instapaper": "Accedi a Instapaper", "Enter endpoint": "Inserisci endpoint", "Enter email": "Inserisci l'email", "Enter password": "Inserire la password", "Read it later services": "Servizi di \"leggi più tardi\"", "Sharing": "Condivisione", "Save articles to read it later services": "Servizi di \"salva gli articoli per leggerli più tardi\"", "Instapaper": "Instapaper", "Connect": "Collega", "Pocket": "Pocket", "RSS Services": "Servizi RSS", "Sync across device with RSS services": "Sincronizza tra dispositivi con i servizi RSS", "Only one service can be connected If you have local sources prior to connecting sync accounts that share same feed URLs, local articles will be removed": "È possibile connettere un solo servizio. Se si dispone di fonti locali prima di connettere account di sincronizzazione che condividono gli stessi URL di fonti, gli articoli locali verranno rimossi", "Invalid credentials": "Credenziali non valide", "Cancel": "Annulla", "Login": "Accedi", "OPML is a standard format to import or export feed subscriptions You can export OPML files from other readers and import it": "OPML è un formato standard per importare o esportare sottoscrizioni alle fonti. Puoi esportare file OPML da altri lettori e importarli", "Import": "Importa", "Import Subscriptions from OPML file": "Importa sottoscrizioni da file OPML", "Choose a file": "Scegli un file", "Edit Feed": "Modifica fonte", "Update": "Aggiorna", "Rename category": "Rinomina categoria", "Mark all articles as read": "Segna tutti gli articoli come letti", "Are you sure you want to mark all articles as read?": "Sei sicuro di voler contrassegnare tutti gli articoli come letti?", "Yes": "sì", "No": "No", "Full Content": "Contenuto completo", "Save article": "Salva articolo", "View original": "Visualizza l'originale", "Format Options": "Opzioni di formato", "Mark as unread": "Segna come non letto", "Mark as read": "Segna come letto", "Mark as unfavourite": "Segna come sfavorevole", "Mark as favourite": "Segna come preferito", "Disconnect": "Disconnetti", "Sync Account": "Sincronizza account", "Quit": "Esci", "Edit": "Modifica", "View": "Visualizzazione", "Add subscription": "Aggiungi sottoscrizione", "Item": "Elemento", "Next item": "Articolo successivo", "Previous item": "Articolo precedente", "Toggle read": "Attiva/disattiva lettura", "Toggle favourite": "Cambia preferito", "Mark all read": "Segna tutto come letto", "Save offline": "Salva per utilizzo non in linea", "View in browser": "Visualizza nel browser", "Import and Export": "Importazione ed esportazione", "Import subscriptions": "Importa sottoscrizioni", "Export subscriptions": "Esporta sottoscrizioni", "Speech": "Dettatura", "Start in tray": "Avvia in vassoio di sistema", "Automatically add to Recently": "Aggiungi automaticamente a Recenti", "Automatically add to Recently Read": "Aggiungi automaticamente a Letti di recente", "Content preview": "Anteprima del contenuto", "Manage categories": "Gestisci categorie", "Manage feeds": "Gestisci fonti", "Connect Feedbin": "Collega Feedbin", "Log into Feedbin": "Accedi a Feedbin", "Connect Self-hosted (Google Reader API)": "Connetti servizio auto-ospitato (API di Google Reader)", "Log into Self Hosted RSS Service": "Accedi al servizio RSS auto-ospitato", "Enter username": "Inserire nome utente", "Connect Fever": "Collega Fever", "Log into Fever": "Accedi a Fever", "No categories available": "Nessuna categoria disponibile", "Feed in this categories would not be deleted": "La fonte in questa categoria non verrebbe eliminata", "Please select atleast one feed": "Seleziona almeno una fonte", "Title": "Titolo", "Feed": "Fonte", "Articles": "Articoli", "Action": "Azione", "Unsubscribe": "Annulla sottoscrizione", "Articles inside this feed would be deleted": "Gli articoli all'interno di questo feed verrebbero eliminati", "Category cannot be empty": { "": "La categoria non può essere vuota" }, "Category": "Categoria", "Manage Categories": "Gestisci categorie", "Manage Feeds": "Gestisci fonti", "Please subscribe to atleast one feed to add category": "Per favore sottoscrivi ad almeno una fonte per aggiungere una categoria", "No feeds available": "Nessuna fonte disponibile", "Add new feed": "Aggiungi nuova fonte", "Disconnect Fever": "Disconnetti Fever", "Disconnect Self-hosted (Google Reader API)": "Disconnetti servizio auto-ospitato (API di Google Reader)", "Copy link": "Copia collegamento", "Remove from favourite": "Rimuovi dai preferiti", "Edit Feedbin": "Modifica Feedbin", "Disconnect Feedbin": "Disconnetti Feedbin", "Disconnect pocket": "Disconnetti Pocket", "Disconnect Instapaper": "Disconnetti Instapaper", "Copy feed link": "Copia collegamento fonte", "Edit feed": "Modifica fonte", "About Raven Reader": "A proposito di Raven Reader", "Version": "Versione", "Services": "Servizi", "Hide": "Nascondi", "Hide Others": "Nascondi gli altri", "Show All": "Mostra tutto", "Quit Raven Reader": "Esci da Raven Reader", "Close Window": "Chiudi la finestra", "Minimize": "Minimizza", "Zoom": "Ingrandisci", "Bring All to Front": "Porta tutto in primo piano", "Mark all articles as unread": "Segna tutti gli articoli come non letti", "Are you sure you want to mark all articles as unread?": "Sei sicuro di voler segnare tutti gli articoli come non letti?", "Mark all unread": "Segna tutti da leggere", "Article list actions": "Azioni elenco articoli", "Language": "Lingua" } ================================================ FILE: public/locales/ja/translation.json ================================================ { "All Feeds": "すべてのフィード", "Favourites": "お気に入り", "Unread Articles": "未読記事", "Recently Read": "最近読んだ記事", "Recently Played": "最近再生したもの", "Saved articles": "保存した記事", "Show more": "もっと表示する", "Show less": "表示を減らす", "Subscriptions": "購読", "Add": "追加", "Please select category": "カテゴリを選んでください", "Add new category": "新しいカテゴリを追加する", "Close": "閉じる", "Subscribe": "購読", "No articles available": "記事がありません", "Load more": "もっと読み込む", "Subscriptions added from here would not be synced with your service": "注: ここから購読したのは同期されません。", "Enter website or feed url": "ウェブサイトあるいはフィードのURLを入力してください", "Enter new category": "新しいカテゴリを入力してください", "Search": "検索", "Refresh All Feeds": "すべてのフィードを更新する", "Mark all as read": "すべてを既読にする", "Settings": "設定", "Preferences": "環境設定", "Keep read RSS items": "項目を既読のままにしておく期間", "Set refresh interval for news feed": "フィードの更新間隔", "Choose appearance": "外観", "Oldest articles first": "古い記事を最初にする", "Disable images in Articles": "記事内の画像を無効にする", "Full article view by default": "すべての記事を表示する", "View original by default": "記事をそのまま表示する", "Delete all feed, category and article data": "すべてのフィード、カテゴリと記事のデータを削除する", "Clear all data": "すべてのデータを削除する", "Proxy Setting": "プロキシ設定", "Web Server (HTTP)": "ウェブサーバー (HTTP):", "Secure Web Server (HTTPS)": "セキュアウェブサーバー (HTTPS):", "Bypass proxy settings for these hosts & domains": "プロキシ設定をこれらのホストとドメインで回避する:", "Set proxy & restart": "プロキシを設定し再起動する", "Connect Instapaper": "Instapaperに接続する", "Connect pocket": "pocketに接続する", "Log into Instapaper": "Instapaperにログインする", "Enter endpoint": "エンドポイントを入力してください", "Enter email": "メールアドレスを入力してください", "Enter password": "パスワードを入力してください", "Read it later services": "後で読むサービス", "Sharing": "共有", "Save articles to read it later services": "後で読むサービスに記事を保存します", "Instapaper": "Instapaper", "Connect": "接続", "Pocket": "Pocket", "RSS Services": "RSS サービス", "Sync across device with RSS services": "RSS サービスをまたいで同期されます。", "Only one service can be connected If you have local sources prior to connecting sync accounts that share same feed URLs, local articles will be removed": "一つのサービスしか接続できません。もしも、同じフィードURLを同期したアカウントがあれば、ローカルにある記事は削除されます。", "Invalid credentials": "無効な認証", "Cancel": "キャンセル", "Login": "ログイン", "OPML is a standard format to import or export feed subscriptions You can export OPML files from other readers and import it": "OPML とはフィードの購読のインポートやエクスポートにおいての標準規格です。またOPML ファイルを他のリーダーでインポートできるようにエクスポートできます。", "Import": "インポート", "Import Subscriptions from OPML file": "OPML ファイルから購読したものをインポートする", "Choose a file": "ファイルを選んでください", "Edit Feed": "フィードの編集", "Update": "更新", "Rename category": "カテゴリの名称変更", "Mark all articles as read": "すべての記事を既読にする", "Are you sure you want to mark all articles as read?": "すべての記事を既読にしますか?", "Yes": "はい", "No": "いいえ", "Full Content": "すべてのコンテンツ", "Save article": "記事を保存する", "View original": "Webサイトを見る", "Format Options": "表示の設定", "Mark as unread": "未読にする", "Mark as read": "既読にする", "Mark as unfavourite": "お気に入りから外す", "Mark as favourite": "お気に入りにする", "Disconnect": "切断", "Sync Account": "アカウントを同期する", "Quit": "終了", "Edit": "編集", "View": "表示", "Add subscription": "購読するサイトを追加する", "Item": "項目", "Next item": "次の項目", "Previous item": "前の項目", "Toggle read": "既読と未読を切り替える", "Toggle favourite": "お気に入りと気に入らないのを切り替える", "Mark all read": "すべてを既読にする", "Save offline": "オフラインに保存する", "View in browser": "ブラウザで閲覧する", "Import and Export": "インポートとエクスポート", "Import subscriptions": "購読したものをインポートする", "Export subscriptions": "購読したものをエクスポートする", "Speech": "スピーチ", "Start in tray": "トレイで起動する", "Automatically add to Recently": "最近へ自動的に追加する", "Automatically add to Recently Read": "最近読んだものへ自動的に追加する", "Content preview": "コンテンツのプレビュー", "Manage categories": "カテゴリの編集", "Manage feeds": "フィードの編集", "Connect Feedbin": "Feedbinに接続する", "Log into Feedbin": "Feedbinにログインする", "Connect Self-hosted (Google Reader API)": "セルフホスト (Google Reader API) に接続する", "Log into Self Hosted RSS Service": "セルフホストされたRSS サービスにログインする", "Enter username": "ユーザー名を入力する", "Connect Fever": "Fever に接続する", "Log into Fever": "Fever にログインする", "No categories available": "カテゴリが存在しません", "Feed in this categories would not be deleted": "このカテゴリ内のフィードは削除されません", "Please select atleast one feed": "少なくとも1つのフィードを選んでください", "Title": "タイトル", "Feed": "フィード", "Articles": "記事", "Action": "アクション", "Unsubscribe": "購読をやめる", "Articles inside this feed would be deleted": "このフィード内の記事は削除されません", "Category cannot be empty": { "": "カテゴリは空にはできません。" }, "Category": "カテゴリ", "Manage Categories": "カテゴリを編集する", "Manage Feeds": "フィードを編集する", "Please subscribe to atleast one feed to add category": "購読するには少なくとも1つのカテゴリを追加してください", "No feeds available": "フィードはありません", "Add new feed": "新しいフィードを追加する", "Disconnect Fever": "Fever から切断する", "Disconnect Self-hosted (Google Reader API)": "セルフホスト (Google Reader API) から切断する", "Copy link": "リンクをコピーする", "Remove from favourite": "お気に入りを削除する", "Edit Feedbin": "Feedbin を編集する", "Disconnect Feedbin": "Feedbin から切断する", "Disconnect pocket": "pocket から切断する", "Disconnect Instapaper": "Instapaper から切断する", "Copy feed link": "フィードのリンクをコピーする", "Edit feed": "フィードを編集する", "About Raven Reader": "Raven Reader について", "Version": "バージョン", "Services": "サービス", "Hide": "隠す", "Hide Others": "他のを隠す", "Show All": "すべて表示する", "Quit Raven Reader": "Raven Reader を終了する", "Close Window": "ウィンドウを閉じる", "Minimize": "最小", "Zoom": "拡大", "Bring All to Front": "全面に出す", "Mark all articles as unread": "すべてを未読にする", "Are you sure you want to mark all articles as unread?": "すべてを未読にしてもよろしいでしょうか?", "Mark all unread": "すべてを未読にする", "Article list actions": "記事のリストのオプション", "Language": "言語" } ================================================ FILE: public/locales/ja/translation.missing.json ================================================ { "Language": "言語" } ================================================ FILE: public/locales/nl/translation.json ================================================ { "All Feeds": "Alle feeds", "Favourites": "Favorieten", "Unread Articles": "Ongelezen artikelen", "Recently Read": "Onlangs gelezen", "Recently Played": "Onlangs afgespeeld", "Saved articles": "Opgeslagen artikelen", "Show more": "Meer artikelen tonen", "Show less": "Minder artikelen tonen", "Subscriptions": "Abonnementen", "Add": "Toevoegen", "Please select category": "Kies een categorie", "Add new category": "Categorie toevoegen", "Close": "Sluiten", "Subscribe": "Abonneren", "No articles available": "Geen artikelen beschikbaar", "Load more": "Meer laden", "Subscriptions added from here would not be synced with your service": "Let op: abonnementen die je hier toevoegt worden niet gesychroniseerd met de dienst.", "Enter website or feed url": "Voer een website- of feed-url in", "Enter new category": "Voer een categorienaam in", "Search": "Zoeken", "Refresh All Feeds": "Alle feeds verversen", "Mark all as read": "Alles markeren als gelezen", "Settings": "Instellingen", "Preferences": "Instellingen", "Keep read RSS items": "RSS-items behouden", "Set refresh interval for news feed": "Ververstussenpoos van nieuwsfeed instellen", "Choose appearance": "Vormgeving kiezen", "Oldest articles first": "Oudste artikelen bovenaan", "Disable images in Articles": "Artikelafbeeldingen verbergen", "Full article view by default": "Altijd volledige artikel laden", "Delete all feed, category and article data": "Alle feeds, categorieën en artikelgegevens verwijderen", "Clear all data": "Alle gegevens wissen", "Proxy Setting": "Proxy-instellingen", "Web Server (HTTP)": "Webserver (http):", "Secure Web Server (HTTPS)": "Beveiligde webserver (https):", "Bypass proxy settings for these hosts & domains": "Proxy-instellingen omzeilen voor de volgende hosts en domeinen:", "Set proxy & restart": "Proxy instellen en herstarten", "Connect Instapaper": "Instapaper-account koppelen", "Connect pocket": "Pocket-account koppelen", "Log into Instapaper": "Inloggen op Instapaper", "Enter endpoint": "Voer het endpoint in", "Enter email": "Voer je e-mailadres in", "Enter password": "Voer je wachtwoord in", "Read it later services": "Later bekijken-diensten", "Sharing": "Delen", "Save articles to read it later services": "Artikelen opslaan op later bekijken-diensten", "Instapaper": "Instapaper", "Connect": "Koppelen", "Pocket": "Pocket", "RSS Services": "RSS-diensten", "Sync across device with RSS services": "Gebruik rss-diensten om te synchroniseren tussen apparaten.", "Only one service can be connected If you have local sources prior to connecting sync accounts that share same feed URLs, local articles will be removed": "Je kunt slechts één dienst koppelen. Als je voorafgaand aan het koppelen lokale bronnen met dezelfde feed-url's had, dan worden de lokale artikelen verwijderd.", "Invalid credentials": "Onjuiste inloggegevens", "Cancel": "Annuleren", "Login": "Inloggen", "OPML is a standard format to import or export feed subscriptions You can export OPML files from other readers and import it": "OPML is een standardformaat om feedabonnementen mee te im- of exporteren. Je kunt opml-bestanden middels andere lezers exporteren en hier importeren.", "Import": "Importeren", "Import Subscriptions from OPML file": "Abonnementen importeren uit opml-bestand", "Choose a file": "Kies een bestand...", "Edit Feed": "Feed bewerken", "Update": "Bijwerken", "Rename category": "Categorienaam wijzigen", "Mark all articles as read": "Alle artikelen markeren als gelezen", "Are you sure you want to mark all articles as read?": "Weet je zeker dat je alle artikelen wilt markeren als gelezen?", "Yes": "Ja", "No": "Nee", "Full Content": "Volledig artikel", "Save article": "Artikel opslaan", "View original": "Origineel bekijken", "Format Options": "Formaatopties", "Mark as unread": "Markeren als ongelezen", "Mark as read": "Markeren als gelezen", "Mark as unfavourite": "Verwijderen uit favorieten", "Mark as favourite": "Toevoegen aan favorieten", "Disconnect": "Loskoppelen", "Sync Account": "Account synchroniseren", "Quit": "Afsluiten", "Edit": "Bewerken", "View": "Beeld", "Add subscription": "Abonnement toevoegen", "Item": "Item", "Next item": "Volgend item", "Previous item": "Vorig item", "Toggle read": "Markeren als (on)gelezen", "Toggle favourite": "(De)markeren als favoriet", "Mark all read": "Alles markeren als gelezen", "Save offline": "Offline opslaan", "View in browser": "Bekijken in browser", "Import and Export": "Importeren en exporteren", "Import subscriptions": "Abonnementen importeren", "Export subscriptions": "Abonnementen exporteren", "Speech": "Voorlezen", "Automatically add to Recently": "Automatisch toevoegen aan recent" } ================================================ FILE: public/locales/nl/translation.missing.json ================================================ {"Connect Feedbin":"Feedbin-account koppelen","Log into Feedbin":"Inloggen op Feedbin","Connect Self-hosted (Google Reader API)":"Zelf-gehoste dienst koppelen (Google Reader-api)","Log into Self Hosted RSS Service":"Inloggen op zelf-gehoste rss-dienst","Enter username":"Voer je gebruikersnaam in","Connect Fever":"Fever-account koppelen","Log into Fever":"Inloggen op Fever"} ================================================ FILE: public/locales/pl/translation.json ================================================ { "All Feeds": "Wszystkie Kanały", "Favourites": "Ulubione", "Unread Articles": "Nieprzeczytane Artykuły", "Recently Read": "Ostatnio Przeczytane", "Recently Played": "Ostatnio Odtworzone", "Saved articles": "Zapisane artykuły", "Show more": "Pokaż więcej", "Show less": "Pokaż mniej", "Subscriptions": "Subskrypcje", "Add": "Dodaj", "Please select category": "Wybierz kategorię", "Add new category": "Dodaj nową kategorię", "Close": "Zamknij", "Subscribe": "Subskrybuj", "No articles available": "Brak dostępnych artykułów", "Load more": "Załaduj więcej", "Subscriptions added from here would not be synced with your service": "Uwaga: Subskrypcje dodane stąd nie są synchronizowane z Twoją usługą.", "Enter website or feed url": "Wpisz stronę internetową lub adres URL", "Enter new category": "Wpisz nową kategorię", "Search": "Szukaj", "Refresh All Feeds": "Odśwież Wszystkie Kanały", "Mark all as read": "Oznacz wszystkie jako przeczytane", "Settings": "Ustawienia", "Preferences": "Preferencje", "Keep read RSS items": "Zachowaj przeczytane pozycje RSS", "Set refresh interval for news feed": "Ustaw interwał odświeżania dla kanału wiadomości", "Choose appearance": "Wybierz wygląd", "Oldest articles first": "Najpierw najstarsze artykuły", "Disable images in Articles": "Wyłącz obrazy w Artykułach", "Full article view by default": "Widok pełnego artykułu domyślnie", "Delete all feed, category and article data": "Usuń wszystkie kanały, kategorie i dane artykułów", "Clear all data": "Wyczyść wszystkie dane", "Proxy Setting": "Ustawienia Proxy", "Web Server (HTTP)": "Serwer Sieciowy (HTTP):", "Secure Web Server (HTTPS)": "Bezpieczny Serwer Sieciowy (HTTPS):", "Bypass proxy settings for these hosts & domains": "Pomijaj ustawienia proxy dla tych hostów i domen:", "Set proxy & restart": "Ustaw proxy i zrestartuj", "Connect Instapaper": "Połącz z Instapaper", "Connect pocket": "Połącz z pocket", "Log into Instapaper": "Zaloguj się do Instapaper.", "Enter endpoint": "Wpisz punkt dostępu", "Enter email": "Wpisz e-mail", "Enter password": "Wpisz hasło", "Read it later services": "Usługi do przeczytania później", "Sharing": "Udostępnianie", "Save articles to read it later services": "Zapisz artykuły do usług przeczytania później", "Instapaper": "Instapaper", "Connect": "Połącz", "Pocket": "Pocket", "RSS Services": "Usługi RSS", "Sync across device with RSS services": "Synchronizuj pomiędzy urządzeniami z usługami RSS.", "Only one service can be connected If you have local sources prior to connecting sync accounts that share same feed URLs, local articles will be removed": "Tylko jedna usługa może być podłączona. Jeśli przed połączeniem kont synchronizacji posiadasz lokalne źródła, które mają ten sam URL kanału, lokalne artykuły zostaną usunięte.", "Invalid credentials": "Nieprawidłowe dane", "Cancel": "Anuluj", "Login": "Zaloguj", "OPML is a standard format to import or export feed subscriptions You can export OPML files from other readers and import it": "OPML jest standardowym formatem do importu lub eksportu subskrypcji kanałów. Możesz eksportować pliki OPML z innych czytników i je importować.", "Import": "Importuj", "Import Subscriptions from OPML file": "Importuj Subskrypcje z pliku OPML", "Choose a file": "Wybierz plik...", "Edit Feed": "Edytuj Kanał", "Update": "Aktualizuj", "Rename category": "Zmień nazwę kategorii", "Mark all articles as read": "Oznacz wszystkie artykuły jako przeczytane", "Are you sure you want to mark all articles as read?": "Czy jesteś pewien, że chcesz oznaczyć wszystkie artykuły jako przeczytane?", "Yes": "Tak", "No": "Nie", "Full Content": "Pełna Treść", "Save article": "Zapisz artykuł", "View original": "Zobacz oryginał", "Format Options": "Opcje Formatowania", "Mark as unread": "Oznacz jako nieprzeczytane", "Mark as read": "Oznacz jako przeczytane", "Mark as unfavourite": "Usuń z ulubionych", "Mark as favourite": "Oznacz jako ulubiony", "Disconnect": "Odłącz", "Sync Account": "Konto Synchronizacji", "Quit": "Wyłącz", "Edit": "Edytuj", "View": "Widok", "Add subscription": "Dodaj subskrypcję", "Item": "Pozycja", "Next item": "Następna pozycja", "Previous item": "Poprzednia pozycja", "Toggle read": "Przełącz przeczytanie", "Toggle favourite": "Przełącz ulubione", "Mark all read": "Oznacz wszystko jako przeczytane", "Save offline": "Zapisz offline", "View in browser": "Zobacz w przeglądarce", "Import and Export": "Importuj i Eksportuj", "Import subscriptions": "Importuj subskrypcje", "Export subscriptions": "Eksportuj subskrypcje", "Speech": "Mowa", "Start in tray": "Rozpocznij w zasobniku", "Automatically add to Recently": "Automatycznie dodaj do Ostatnich", "Automatically add to Recently Read": "Automatycznie dodaj do Ostatnio Przeczytanych", "Content preview": "Podgląd treści", "Manage categories": "Zarządzaj kategoriami", "Manage feeds": "Zarządzaj kanałami", "Connect Feedbin": "Połącz z Feedbin", "Log into Feedbin": "Zaloguj się do Feedbin", "Connect Self-hosted (Google Reader API)": "Połącz z Self-hosted (Google Reader API)", "Log into Self Hosted RSS Service": "Połącz z hostowaną przez ciebie Usługą RSS", "Enter username": "Wpisz nazwę użytkownika", "Connect Fever": "Połącz z Fever", "Log into Fever": "Zaloguj się do Fever", "No categories available": "Brak dostępnych kategorii", "Feed in this categories would not be deleted": "Kanały w tych kategoriach nie zostaną usunięte", "Please select atleast one feed": "Wybierz co najmniej jeden kanał", "Title": "Tytuł", "Feed": "Kanał", "Articles": "Artykuły", "Action": "Akcja", "Unsubscribe": "Odsubskrybuj", "Articles inside this feed would be deleted": "Artykuły w tym kanale zostaną usunięte", "Category cannot be empty": { "": "Kategoria nie może być pusta." }, "Category": "Kategoria", "Manage Categories": "Zarządzaj Kategoriami", "Manage Feeds": "Zarządzać Kanałami", "Please subscribe to atleast one feed to add category": "Subskrybuj co najmniej jeden kanał, aby dodać kategorię", "No feeds available": "Brak dostępnych kanałów.", "Add new feed": "Dodaj nowy kanał", "Disconnect Fever": "Odłącz Fever", "Disconnect Self-hosted (Google Reader API)": "Odłącz Self-hosted (Google Reader API)", "Copy link": "Skopiuj link", "Remove from favourite": "Usuń z ulubionych", "Edit Feedbin": "Edytuj Feedbin", "Disconnect Feedbin": "Odłącz Feedbin", "Disconnect pocket": "Odłącz pocket", "Disconnect Instapaper": "Odłącz Instapaper", "Copy feed link": "Kopiuj link kanału", "Edit feed": "Edytuj kanał", "About Raven Reader": "O Raven Reader", "Version": "Wersja", "Services": "Usługi", "Hide": "Ukryj", "Hide Others": "Ukryj Inne", "Show All": "Pokaż Wszystkie", "Quit Raven Reader": "Wyłącz Raven Reader", "Close Window": "Zamknij Okno", "Minimize": "Minimalizuj", "Zoom": "Przybliż", "Bring All to Front": "Bring All to Front", "Mark all articles as unread": "Oznacz wszystkie artykuły jako nieprzeczytane", "Are you sure you want to mark all articles as unread?": "Czy na pewno chcesz oznaczyć wszystkie artykuły jako nieprzeczytane?", "Mark all unread": "Oznacz wszystko jako nieprzeczytane", "Article list actions": "Akcje listy artykułów", "Language": "Język" } ================================================ FILE: public/locales/pt-br/translation.json ================================================ { "All Feeds": "Todos os Feeds", "Favourites": "Favoritos", "Unread Articles": "Artigos Não Lidos", "Recently Read": "Lidos Recentemente", "Recently Played": "Tocados Recentemente", "Saved articles": "Artigos salvos", "Show more": "Mostrar mais", "Show less": "Mostrar menos", "Subscriptions": "Inscrições", "Add": "Adicionar", "Please select category": "Por favor, selecione a categoria", "Add new category": "Adicionar nova categoria", "Close": "Fechar", "Subscribe": "Inscrever-se", "No articles available": "Nenhum artigo disponível", "Load more": "Carregar mais", "Subscriptions added from here would not be synced with your service": "Nota: Inscrições adicionadas por aqui não serão sincronizadas com o seu serviço", "Enter website or feed url": "Adicionar site ou URL de feed", "Enter new category": "Adicionar nova categoria", "Search": "Buscar", "Refresh All Feeds": "Recarregar todos os Feeds", "Mark all as read": "Marcar todos como lidos", "Settings": "Configurações", "Preferences": "Preferências", "Keep read RSS items": "Manter itens RSS lidos", "Set refresh interval for news feed": "Definir intervalo de atualização para o feed de notícias", "Choose appearance": "Escolher aparência", "Oldest articles first": "Artigos antigos primeiro", "Disable images in Articles": "Desabilitar imagens em Artigos", "Full article view by default": "Visualização completa do artigo por padrão", "Delete all feed, category and article data": "Deletar todas as informações do feed, categoria e artigos", "Clear all data": "Limpar todas as informações", "Proxy Setting": "Configurações de Proxy", "Web Server (HTTP)": "Web Server (HTTP):", "Secure Web Server (HTTPS)": "Secure Web Server (HTTPS):", "Bypass proxy settings for these hosts & domains": "Configurações do Bypass proxy para esses hospedeiros e domínios:", "Set proxy & restart": "Definir proxy & reiniciar", "Connect Instapaper": "Conectar Instapaper", "Connect pocket": "Conectar pocket", "Log into Instapaper": "Entrar no Instapaper", "Enter endpoint": "Digite o ponto final", "Enter email": "Digite o seu email", "Enter password": "Digite a sua senha", "Read it later services": "Serviços de ler depois", "Sharing": "Compartilhamento", "Save articles to read it later services": "Salvar artigos para os serviços de ler depois", "Instapaper": "Instapaper", "Connect": "Conectar", "Pocket": "Pocket", "RSS Services": "Serviços RSS", "Sync across device with RSS services": "Sincronizar através de dispositivo com serviços RSS.", "Only one service can be connected If you have local sources prior to connecting sync accounts that share same feed URLs, local articles will be removed": "Apenas um serviço pode ser conectado. Se você possui fontes locais antes de conectar contas sincronizadas que compartilham as mesmas URLs de feed, os artigos locais serão removidos.", "Invalid credentials": "Credenciais inválidas", "Cancel": "Cancelar", "Login": "Entrar", "OPML is a standard format to import or export feed subscriptions You can export OPML files from other readers and import it": "OPLM é um formato padrão para importar ou exportar inscrições de feed. Você pode exportar arquivos OPML de outros leitores e importá-los.", "Import": "Importar", "Import Subscriptions from OPML file": "Importar Inscrições de arquivo OPML", "Choose a file": "Escolher um arquivo...", "Edit Feed": "Editar Feed", "Update": "Atualizar", "Rename category": "Renomear categoria", "Mark all articles as read": "Marcar todos os artigos como lidos", "Are you sure you want to mark all articles as read?": "Você tem certeza que quer marcar todos os artigos como lidos?", "Yes": "Sim", "No": "Não", "Full Content": "Conteúdo Completo", "Save article": "Salvar artigo", "View original": "Ver original", "Format Options": "Formatar Opções", "Mark as unread": "Marcar como não lido", "Mark as read": "Marcar como lido", "Mark as unfavourite": "Desmarcar como favorito", "Mark as favourite": "Marcar como favorito", "Disconnect": "Desconectar", "Sync Account": "Sincronizar conta", "Quit": "Sair", "Edit": "Editar", "View": "Ver", "Add subscription": "Adicionar inscrição", "Item": "Item", "Next item": "Próximo item", "Previous item": "Item anterior", "Toggle read": "Habiltiar leitura", "Toggle favourite": "Habilitar favorito", "Mark all read": "Marcar todos como lidos", "Save offline": "Salvar offline", "View in browser": "Ver no navegador", "Import and Export": "Importar e Exportar", "Import subscriptions": "Importar inscrições", "Export subscriptions": "Exportar inscrições", "Speech": "Discurso", "Start in tray": "Começar na bandeja", "Automatically add to Recently": "Adicionar automaticamente aos Recentes", "Automatically add to Recently Read": "Adicionar automaticamente aos Lidos Recentemente", "Content preview": "Pervisão de conteúdo", "Manage categories": "Gerenciar categorias", "Manage feeds": "Gerenciar feeds", "Connect Feedbin": "Conectar Feedbin", "Log into Feedbin": "Entrar no Feedbin", "Connect Self-hosted (Google Reader API)": "Conectar auto-hospedado (Google Reader API)", "Log into Self Hosted RSS Service": "Entrar em serviço RSS auto-hospedado", "Enter username": "Digite o seu usuário", "Connect Fever": "Conectar Fever", "Log into Fever": "Entrar no Fever", "No categories available": "Nenhuma categoria disponível", "Feed in this categories would not be deleted": "O feed nessas categorias não serão deletados", "Please select atleast one feed": "Por favor selecione pelo menos um feed", "Title": "Título", "Feed": "Feed", "Articles": "Artigos", "Action": "Ação", "Unsubscribe": "Cancelar inscrição", "Articles inside this feed would be deleted": "Os artigos dentro desse feed vão ser deletados", "Category cannot be empty": { "": "Categoria não pode ser vazia." }, "Category": "Categoria", "Manage Categories": "Gerenciar Categories", "Manage Feeds": "Gerenciar Feeds", "Please subscribe to atleast one feed to add category": "Por favor inscreva-se em pelo menos um feed para adicionar categoria", "No feeds available": "Nenhum feed disponível", "Add new feed": "Adicionar novo feed", "Disconnect Fever": "Desconectar Fever", "Disconnect Self-hosted (Google Reader API)": "Desconectar auto-hospedagem (Google Reader API)", "Copy link": "Copiar link", "Remove from favourite": "Remover favorito", "Edit Feedbin": "Editar Feedbin", "Disconnect Feedbin": "Desconectar Feedbin", "Disconnect pocket": "Desconectar pocket", "Disconnect Instapaper": "Desconectar Instapaper", "Copy feed link": "Copiar link do feed", "Edit feed": "Editar feed", "About Raven Reader": "Sobre Raven Reader", "Version": "Versão", "Services": "Serviços", "Hide": "Esconder", "Hide Others": "Esconder Outros", "Show All": "Mostrar Todos", "Quit Raven Reader": "Sair do Raven Reader", "Close Window": "Fechar Janela", "Minimize": "Minimizar", "Zoom": "Aproximar", "Bring All to Front": "Trazer todos para a frente", "Mark all articles as unread": "Marcar todos os artigos como não lidos", "Are you sure you want to mark all articles as unread?": "Você tem certeza que quer marcar todos os artigos como não lidos?", "Mark all unread": "Marcar todos como não lidos", "Article list actions": "Ações de listagem de artigo", "Language": "Linguagem" } ================================================ FILE: public/locales/ru/translation.json ================================================ { "All Feeds": "Все ленты", "Favourites": "Избранное", "Unread Articles": "Непрочитанные статьи", "Recently Read": "Недавно читали", "Recently Played": "Недавно смотрели", "Saved articles": "Сохранённые статьи", "Show more": "Показать больше", "Show less": "Показать меньше", "Subscriptions": "Подписки", "Add": "Добавить", "Please select category": "Выберите категорию", "Add new category": "Добавить новую категорию", "Close": "Закрыть", "Subscribe": "Подписаться", "No articles available": "Нет доступных статей", "Load more": "Загрузить ещё", "Subscriptions added from here would not be synced with your service": "Примечание: Подписки, добавленные отсюда, не будут синхронизированы с вашим сервисом.", "Enter website or feed url": "Введите ссылку сайта или ленты", "Enter new category": "Введите новую категорию", "Search": "Поиск", "Refresh All Feeds": "Обновить все ленты", "Mark all as read": "Отметить всё как прочитанное", "Settings": "Настройки", "Preferences": "Предпочтения", "Keep read RSS items": "Продолжать читать RSS-элементы", "Set refresh interval for news feed": "Установите интервал обновления для ленты новостей", "Choose appearance": "Выбрать внешний вид", "Oldest articles first": "Сначала старые статьи", "Disable images in Articles": "Отключить изображения в статьях", "Full article view by default": "Полный вид статьи по умолчанию", "Delete all feed, category and article data": "Удалить все данные ленты, категории и статьи", "Clear all data": "Очистить все данные", "Proxy Setting": "Настройки прокси", "Web Server (HTTP)": "Веб-сервер (HTTP):", "Secure Web Server (HTTPS)": "Безопасный веб-сервер (HTTPS):", "Bypass proxy settings for these hosts & domains": "Обход настроек прокси для этих хостов и доменов:", "Set proxy & restart": "Установить прокси и перезапустить", "Connect Instapaper": "Подключить Instapaper", "Connect pocket": "Подключить Pocket", "Log into Instapaper": "Войти через Instapaper", "Enter endpoint": "Введите конечную точку", "Enter email": "Введите адрес электронной почты", "Enter password": "Введите пароль", "Read it later services": "Прочитать это позже", "Sharing": "Распределение", "Save articles to read it later services": "Сохраняйте статьи, чтобы прочитать их позже.", "Instapaper": "Instapaper", "Connect": "Подключить", "Pocket": "Pocket", "RSS Services": "Сервисы RSS", "Sync across device with RSS services": "Синхронизация между устройствами с помощью сервисов RSS.", "Only one service can be connected If you have local sources prior to connecting sync accounts that share same feed URLs, local articles will be removed": "Можно подключить только один сервис. Если у вас есть локальные источники до подключения учётных записей синхронизации, которые используют одни и теже ссылки каналов, локальные статьи будут удалены.", "Invalid credentials": "Неверные учётные данные", "Cancel": "Отмена", "Login": "Войти", "OPML is a standard format to import or export feed subscriptions You can export OPML files from other readers and import it": "OPML - это стандартный формат для импорта или экспорта подписок на каналы. Вы можете экспортировать файлы OPML из других программ чтения и импортировать их.", "Import": "Импорт", "Import Subscriptions from OPML file": "Импорт подписок из файла OPML", "Choose a file": "Выберите файл...", "Edit Feed": "Редактировать ленту", "Update": "Обновить", "Rename category": "Переименовать категорию", "Mark all articles as read": "Отметить все статьи как прочитанные", "Are you sure you want to mark all articles as read?": "Отметить все статьи как прочитанные?", "Yes": "Да", "No": "Нет", "Full Content": "Полное содержание", "Save article": "Сохранить статью", "View original": "Посмотреть оригинал", "Format Options": "Параметры формата", "Mark as unread": "Отметить как непрочитанное", "Mark as read": "Отметить как прочитанное", "Mark as unfavourite": "Убрать из избранного", "Mark as favourite": "Добавить в избранное", "Disconnect": "Разъединить", "Sync Account": "Учётная запись синхронизации", "Quit": "Выйти", "Edit": "Редактировать", "View": "Вид", "Add subscription": "Добавить подписку", "Item": "Элемент", "Next item": "Следующий элемент", "Previous item": "Предыдущий элемент", "Toggle read": "Переключить чтение", "Toggle favourite": "Переключить избранное", "Mark all read": "Отметить все как прочитанные", "Save offline": "Сохранить в автономном режиме", "View in browser": "Просмотр в браузере", "Import and Export": "Импорт и экспорт", "Import subscriptions": "Импорт подписок", "Export subscriptions": "Экспорт подписок", "Speech": "Речь", "Start in tray": "Запуск в трее", "Automatically add to Recently": "Автоматически добавлять в недавнее", "Automatically add to Recently Read": "Автоматически добавлять в недавно прочитанные", "Content preview": "Предпросмотр содержимого", "Manage categories": "Управление категориями", "Manage feeds": "Управление лентами", "Connect Feedbin": "Подключить Feedbin", "Log into Feedbin": "Войти через Feedbin", "Connect Self-hosted (Google Reader API)": "Подключить собственный хостинг (Google Reader API)", "Log into Self Hosted RSS Service": "Войти через собственный хостинг сервисов RSS", "Enter username": "Введите имя пользователя", "Connect Fever": "Подключить Fever", "Log into Fever": "Войти через Fever", "No categories available": "Нет доступных категорий", "Feed in this categories would not be deleted": "Лента в этой категории не будет удалена", "Please select atleast one feed": "Выберите хотябы одну ленту", "Title": "Заголовок", "Feed": "Лента", "Articles": "Статьи", "Action": "Действие", "Unsubscribe": "Отписаться", "Articles inside this feed would be deleted": "Статьи внутри этой ленты будут удалены", "Category cannot be empty": { "": "Категория не может быть пустой." }, "Category": "Категория", "Manage Categories": "Управление категориями", "Manage Feeds": "Управление лентами", "Please subscribe to atleast one feed to add category": "Подпишитесь хотя бы на одну ленту, чтобы добавить категорию", "No feeds available": "Нет доступных лент", "Add new feed": "Добавить новую ленту", "Disconnect Fever": "Выйти из Fever", "Disconnect Self-hosted (Google Reader API)": "Выйти из собственного хостинга (Google Reader API)", "Copy link": "Копировать ссылку", "Remove from favourite": "Удалить из избранного", "Edit Feedbin": "Редактировать Feedbin", "Disconnect Feedbin": "Выйти из Feedbin", "Disconnect pocket": "Выйти из Pocket", "Disconnect Instapaper": "Выйти из Instapaper", "Copy feed link": "Копировать ссылку на ленту", "Edit feed": "Редактировать ленту", "About Raven Reader": "О Raven Reader", "Version": "Версия", "Services": "Сервисы", "Hide": "Скрыть", "Hide Others": "Скрыть другие", "Show All": "Показать все", "Quit Raven Reader": "Закрыть Raven Reader", "Close Window": "Закрыть окно", "Minimize": "Свернуть окно", "Zoom": "Развернуть окно", "Bring All to Front": "Вывести всё на передний план" } ================================================ FILE: public/locales/ru/translation.missing.json ================================================ { "Language": "Language" } ================================================ FILE: public/locales/tr/translation.json ================================================ { "All Feeds": "Tüm Beslemeler", "Favourites": "Favoriler", "Unread Articles": "Okunmamış Makaleler", "Recently Read": "Son Okunanlar", "Recently Played": "Son Oynatılan", "Saved articles": "Kaydedilen Makaleler", "Show more": "Daha Fazla Göster", "Show less": "Daha Az Göster", "Subscriptions": "Abonelikler", "Add": "Ekle", "Please select category": "Lütfen kategori seçin", "Add new category": "Yeni Kategori Ekle", "Close": "Kapat", "Subscribe": "Abone Ol", "No articles available": "Kullanılabilir makale yok", "Load more": "Daha fazla yükle", "Subscriptions added from here would not be synced with your service": "Not: Buradan eklenen abonelikler hizmetinizle senkronize edilmeyecektir.", "Enter website or feed url": "Web sitesi veya besleme url'sini girin", "Enter new category": "Yeni kategori girin", "Search": "Ara", "Refresh All Feeds": "Tüm Beslemeleri Yenile", "Mark all as read": "Tümünü okundu olarak işaretle", "Settings": "Ayarlar", "Preferences": "Tercihler", "Keep read RSS items": "RSS öğelerini okumaya devam edin", "Set refresh interval for news feed": "Haber akışı için yenileme aralığını ayarlayın", "Choose appearance": "Görünümü seçin", "Oldest articles first": "Önce en eski makaleler", "Disable images in Articles": "Makalelerde resimleri devre dışı bırakın", "Full article view by default": "Varsayılan olarak tam makale görünümü", "Delete all feed, category and article data": "Tüm beslemeyi, kategoriyi ve makale verilerini sil", "Clear all data": "Tüm verileri temizle", "Proxy Setting": "Proxy Ayarı", "Web Server (HTTP)": "Web Sunucusu (HTTP):", "Secure Web Server (HTTPS)": "Güvenli Web Sunucusu (HTTPS):", "Bypass proxy settings for these hosts & domains": "Bu ana bilgisayarlar ve etki alanları için proxy ayarlarını atla:", "Set proxy & restart": "Proxy ayarla ve yeniden başlat", "Connect Instapaper": "Instapaper'ı Bağlayın", "Connect pocket": "Poket'ı Bağlayın", "Log into Instapaper": "Instapaper'da oturum açın", "Enter endpoint": "Uç nokta girin", "Enter email": "E-posta girin", "Enter password": "Parolanı Gir", "Read it later services": "Daha Sonra Oku Hizmetleri", "Sharing": "Paylaşım", "Save articles to read it later services": "Makaleleri okumak için daha sonra oku hizmetlerine kaydedin", "Instapaper": "Instapaper", "Connect": "Bağlan", "Pocket": "Pocket", "RSS Services": "RSS Hizmetleri", "Sync across device with RSS services": "Sync across device with RSS services.", "Only one service can be connected If you have local sources prior to connecting sync accounts that share same feed URLs, local articles will be removed": "Yalnızca bir hizmet bağlanabilir Aynı akış URL'lerini paylaşan eşitleme hesaplarını bağlamadan önce yerel kaynaklarınız varsa, yerel makaleler kaldırılır", "Invalid credentials": "Geçersiz kimlik bilgileri", "Cancel": "İptal Et", "Login": "Oturum aç", "OPML is a standard format to import or export feed subscriptions You can export OPML files from other readers and import it": "OPML, yayın aboneliklerini içe veya dışa aktarmak için standart bir formattır. OPML dosyalarını diğer okuyuculardan dışa aktarabilir veya içe aktarabilirsiniz.", "Import": "İçe Aktar", "Import Subscriptions from OPML file": "OPML dosyasından Abonelikleri İçe Aktar", "Choose a file": "Bir dosya seçin...", "Edit Feed": "Beslemeyi Düzenle", "Update": "Güncelleme", "Rename category": "Kategoriyi yeniden adlandırın", "Mark all articles as read": "Tüm makaleleri okundu olarak işaretle", "Are you sure you want to mark all articles as read?": "Tüm makaleleri okundu olarak işaretlemek istediğinizden emin misiniz?", "Yes": "Evet", "No": "Hayır", "Full Content": "Tam İçerik", "Save article": "Makaleyi kaydet", "View original": "Orijinali görüntüleyin", "Format Options": "Biçim Seçenekleri", "Mark as unread": "Okunmamış olarak işaretle", "Mark as read": "Okundu olarak işaretle", "Mark as unfavourite": "Beğenmiyorum olarak işaretle", "Mark as favourite": "Favori olarak işaretle", "Disconnect": "Bağlantıyı kes", "Sync Account": "Hesabı Senkronize Et", "Quit": "Çık", "Edit": "Düzenle", "View": "Görünüm", "Add subscription": "Abonelik ekleyin", "Item": "Öğe", "Next item": "Sıradaki öğe", "Previous item": "Önceki öğe", "Toggle read": "Okumayı aç / kapat", "Toggle favourite": "Favoriyi aç / kapat", "Mark all read": "Tümünü okundu olarak işaretle", "Save offline": "Çevrimdışına kaydet", "View in browser": "Tarayıcıda görüntüle", "Import and Export": "İçe ve Dışa Aktar", "Import subscriptions": "Abonelikleri içe aktar", "Export subscriptions": "Abonelikleri dışa aktar", "Speech": "Konuşma", "Start in tray": "Tepside başla", "Automatically add to Recently": "Son zamanlara otomatik olarak ekle", "Automatically add to Recently Read": "Son okunanlara otomatik olarak ekle", "Content preview": "İçerik önizlemesi", "Manage categories": "Kategorileri Yönet", "Manage feeds": "Beslemeleri Yönet" } ================================================ FILE: public/locales/tr/translation.missing.json ================================================ { "Language": "Language" } ================================================ FILE: public/locales/zh-CN/translation.json ================================================ { "All Feeds": "全部信息流", "Favourites": "收藏夹", "Unread Articles": "未读文章", "Recently Read": "最近阅读", "Recently Played": "最近播放", "Saved articles": "保存的文章", "Show more": "展示更多", "Show less": "展示更少", "Subscriptions": "订阅", "Add": "添加", "Please select category": "请选择类别", "Add new category": "新增类别", "Close": "关闭", "Subscribe": "订阅", "No articles available": "没有更多文章", "Load more": "加载更多", "Subscriptions added from here would not be synced with your service": "注意:从这里添加的订阅将不会与你的服务同步。", "Enter website or feed url": "输入网站或信息流url", "Enter new category": "输入新的分类", "Search": "搜索", "Refresh All Feeds": "刷新全部信息流", "Mark all as read": "标记全部为已读", "Settings": "设置", "Preferences": "首选项", "Keep read RSS items": "保留已读的RSS项目", "Set refresh interval for news feed": "设置新闻信息流的刷新间隔", "Choose appearance": "选择外观", "Oldest articles first": "最早的文章在前", "Disable images in Articles": "禁用文章中的图片", "Full article view by default": "默认情况下的文章全文浏览", "View original by default": "默认情况下浏览原始文章", "Delete all feed, category and article data": "删除所有信息流、类别和文章数据", "Clear all data": "清除所有数据", "Proxy Setting": "代理设置", "Web Server (HTTP)": "Web服务器 (HTTP):", "Secure Web Server (HTTPS)": "安全Web服务器 (HTTPS):", "Bypass proxy settings for these hosts & domains": "绕过这些主机和域名的代理设置:", "Set proxy & restart": "设置代理并重新启动", "Connect Instapaper": "连接Instapaper", "Connect pocket": "连接pocket", "Log into Instapaper": "登录Instapaper", "Enter endpoint": "输入端点", "Enter email": "输入邮箱", "Enter password": "输入密码", "Read it later services": "稍后阅读服务", "Sharing": "分享", "Save articles to read it later services": "保存文章到稍后阅读服务", "Instapaper": "Instapaper", "Connect": "连接", "Pocket": "Pocket", "RSS Services": "RSS服务", "Sync across device with RSS services": "跨设备与RSS服务同步", "Only one service can be connected If you have local sources prior to connecting sync accounts that share same feed URLs, local articles will be removed": "只能连接一个服务。如果你在连接同步账户之前有本地来源,共享相同的信息流URL,本地文章将被删除。", "Invalid credentials": "无效凭证", "Cancel": "取消", "Login": "登录", "OPML is a standard format to import or export feed subscriptions You can export OPML files from other readers and import it": "OPML是一种标准格式,用于导入或导出信息流订阅。你可以从其他阅读器导出OPML文件,并导入它。", "Import": "导入", "Import Subscriptions from OPML file": "从OPML文件导入订阅", "Choose a file": "选择文件", "Edit Feed": "编辑信息流", "Update": "更新", "Rename category": "重命名分类", "Mark all articles as read": "标记所有文章为已读", "Are you sure you want to mark all articles as read?": "你确定要标记所有文章为已读吗?", "Yes": "是", "No": "否", "Full Content": "全部内容", "Save article": "保存文章", "View original": "查看原文", "Format Options": "格式选项", "Mark as unread": "标记为未读", "Mark as read": "标记为已读", "Mark as unfavourite": "标记为不喜欢", "Mark as favourite": "标记为喜欢", "Disconnect": "断开连接", "Sync Account": "同步账户", "Quit": "退出", "Edit": "编辑", "View": "查看", "Add subscription": "添加订阅", "Item": "项目", "Next item": "下一个项目", "Previous item": "上一个项目", "Toggle read": "切换到阅读", "Toggle favourite": "切换到喜欢", "Mark all read": "标记全部阅读", "Save offline": "离线保存", "View in browser": "在浏览器中查看", "Import and Export": "导入和导出", "Import subscriptions": "导入订阅", "Export subscriptions": "导出订阅", "Speech": "发言", "Start in tray": "最小化到托盘", "Automatically add to Recently": "自动添加到最近", "Automatically add to Recently Read": "自动添加到最近阅读", "Content preview": "内容预览", "Manage categories": "管理分类", "Manage feeds": "管理信息流", "Connect Feedbin": "连接 Feedbin", "Log into Feedbin": "登陆 Feedbin", "Connect Self-hosted (Google Reader API)": "连接自托管 (Google Reader API)", "Log into Self Hosted RSS Service": "登陆自托管 RSS 服务", "Enter username": "输入用户名", "Connect Fever": "连接 Fever", "Log into Fever": "登陆 Fever", "No categories available": "无可用分类", "Feed in this categories would not be deleted": "此分类下的信息流不会被删除", "Please select atleast one feed": "请至少选择一条信息流", "Title": "标题", "Feed": "信息流", "Articles": "文章", "Action": "操作", "Unsubscribe": "取消订阅", "Articles inside this feed would be deleted": "此信息流中的所有文章将被删除", "Category cannot be empty": { "": "分类不能为空" }, "Category": "分类", "Manage Categories": "管理分类", "Manage Feeds": "管理信息流", "Please subscribe to atleast one feed to add category": "请至少订阅一条信息流以添加分类", "No feeds available": "无可用信息流", "Add new feed": "添加新信息流", "Disconnect Fever": "断开 Fever", "Disconnect Self-hosted (Google Reader API)": "断开自托管 (Google Reader API)", "Copy link": "复制链接", "Remove from favourite": "从收藏中移除", "Edit Feedbin": "编辑 Feedbin", "Disconnect Feedbin": "断开 Feedbin", "Disconnect pocket": "断开 pocket", "Disconnect Instapaper": "断开 Instapaper", "Copy feed link": "复制信息流链接", "Edit feed": "编辑信息流", "About Raven Reader": "关于 Raven Reader", "Version": "版本", "Services": "服务", "Hide": "隐藏", "Hide Others": "隐藏其他", "Show All": "显示全部", "Quit Raven Reader": "退出 Raven Reader", "Close Window": "关闭窗口", "Minimize": "最小化", "Zoom": "缩放", "Bring All to Front": "全部移到最上层", "Mark all articles as unread": "标记所有文章为未读", "Are you sure you want to mark all articles as unread?": "你确定要标记所有文章为未读吗?", "Mark all unread": "标记所有为未读", "Article list actions": "文章列表操作", "Language": "语言" } ================================================ FILE: public/locales/zh-TW/translation.json ================================================ { "All Feeds": "所有摘要", "Favourites": "收藏夾", "Unread Articles": "未讀文章", "Recently Read": "最近閱讀", "Recently Played": "最近播放", "Saved articles": "已儲存的文章", "Show more": "顯示更多", "Show less": "顯示較少", "Subscriptions": "訂閱", "Add": "新增", "Please select category": "請選擇類別", "Add new category": "新增新類別", "Close": "關閉", "Subscribe": "訂閱", "No articles available": "無可用文章", "Load more": "載入更多", "Subscriptions added from here would not be synced with your service": "提醒:在此新增的訂閱不會與您的服務同步。", "Enter website or feed url": "輸入網站或摘要網址", "Enter new category": "輸入新類別", "Search": "搜尋", "Refresh All Feeds": "重新整理所有摘要", "Mark all as read": "全部標記為已讀", "Settings": "設定", "Preferences": "偏好", "Keep read RSS items": "保留已讀的 RSS 項目", "Set refresh interval for news feed": "設置新聞摘要的重新整理間隔", "Choose appearance": "選擇外觀", "Oldest articles first": "舊文章排前", "Disable images in Articles": "停用文章中的圖片", "Full article view by default": "預設使用全文閱覽", "View original by default": "預設使用原文閱覽", "Delete all feed, category and article data": "刪除所有摘要、類別、及文章資料", "Clear all data": "清除所有資料", "Proxy Setting": "Proxy 設定", "Web Server (HTTP)": "網頁伺服器 (HTTP):", "Secure Web Server (HTTPS)": "安全網頁伺服器 (HTTPS):", "Bypass proxy settings for these hosts & domains": "以下的網域和主機可以繞過 Proxy 設定:", "Set proxy & restart": "設置 proxy 並重新啟動", "Connect Instapaper": "連接 Instapaper", "Connect pocket": "連接 pocket", "Log into Instapaper": "登入 Instapaper", "Enter endpoint": "輸入端點", "Enter email": "輸入電子郵件地址", "Enter password": "輸入密碼", "Read it later services": "稍後閱讀服務", "Sharing": "分享", "Save articles to read it later services": "將文章儲存至稍後閱讀服務", "Instapaper": "Instapaper", "Connect": "連接", "Pocket": "Pocket", "RSS Services": "RSS 服務", "Sync across device with RSS services": "使用 RSS 服務在裝置間同步。", "Only one service can be connected If you have local sources prior to connecting sync accounts that share same feed URLs, local articles will be removed": "僅能連接一個服務。若您在連接同步帳號前已有相同摘要網址的本機來源,本機文章將被移除。", "Invalid credentials": "憑證無效", "Cancel": "取消", "Login": "登入", "OPML is a standard format to import or export feed subscriptions You can export OPML files from other readers and import it": "OPML 是匯入或匯出摘要訂閱的標準格式。您可以在其他閱讀器中匯出 OPML 檔案並匯入到這裡。", "Import": "匯入", "Import Subscriptions from OPML file": "從 OPML 檔案匯入訂閱", "Choose a file": "選擇檔案...", "Edit Feed": "編輯摘要", "Update": "更新", "Rename category": "重新命名類別", "Mark all articles as read": "全部標記為已讀", "Are you sure you want to mark all articles as read?": "您確定要將所有文章標記為已讀嗎?", "Yes": "是", "No": "否", "Full Content": "完整內容", "Save article": "儲存文章", "View original": "檢視原始", "Format Options": "格式選項", "Mark as unread": "標示為未讀", "Mark as read": "標示為已讀", "Mark as unfavourite": "標記為不喜歡", "Mark as favourite": "標記為喜歡", "Disconnect": "斷開連接", "Sync Account": "同步帳號", "Quit": "退出", "Edit": "編輯", "View": "檢視", "Add subscription": "新增訂閱", "Item": "項目", "Next item": "下一項目", "Previous item": "上一項目", "Toggle read": "切換閱讀", "Toggle favourite": "切換喜歡", "Mark all read": "標記全部已讀", "Save offline": "離線儲存", "View in browser": "在瀏覽器中檢視", "Import and Export": "匯入和匯出", "Import subscriptions": "匯入訂閱", "Export subscriptions": "匯出訂閱", "Speech": "Speech", "Start in tray": "在系統匣中啟動", "Automatically add to Recently": "自動新增至最近", "Automatically add to Recently Read": "自動新增至最近閱讀", "Content preview": "內容預覽", "Manage categories": "管理類別", "Manage feeds": "管理摘要", "Connect Feedbin": "連接 Feedbin", "Log into Feedbin": "登入 Feedbin", "Connect Self-hosted (Google Reader API)": "連接自架 (Google Reader API)", "Log into Self Hosted RSS Service": "登入自架 RSS 服務", "Enter username": "輸入使用者名稱", "Connect Fever": "連接 Fever", "Log into Fever": "登入 Fever", "No categories available": "無可用類別", "Feed in this categories would not be deleted": "在此類別的摘要不會被刪除", "Please select atleast one feed": "請至少選擇一個摘要", "Title": "標題", "Feed": "摘要", "Articles": "文章", "Action": "動作", "Unsubscribe": "取消訂閱", "Articles inside this feed would be deleted": "在此摘要中的所有文章將被刪除", "Category cannot be empty": { "": "類別不能留空。" }, "Category": "類別", "Manage Categories": "管理類別", "Manage Feeds": "管理摘要", "Please subscribe to atleast one feed to add category": "請至少訂閱一個摘要以新增類別", "No feeds available": "無可用摘要", "Add new feed": "新增新摘要", "Disconnect Fever": "與 Fever 斷開連接", "Disconnect Self-hosted (Google Reader API)": "與自架 (Google Reader API) 斷開連接", "Copy link": "複製連結", "Remove from favourite": "從收藏家中移除", "Edit Feedbin": "編輯 Feedbin", "Disconnect Feedbin": "與 Feedbin 斷開連接", "Disconnect pocket": "與 pocket 斷開連接", "Disconnect Instapaper": "與 Instapaper 斷開連接", "Copy feed link": "複製摘要連結", "Edit feed": "編輯摘要", "About Raven Reader": "關於 Raven Reader", "Version": "版本", "Services": "服務", "Hide": "隱藏", "Hide Others": "隱藏其餘", "Show All": "顯示全部", "Quit Raven Reader": "退出 Raven Reader", "Close Window": "關閉視窗", "Minimize": "最小化", "Zoom": "縮放", "Bring All to Front": "全部移到最上層", "Mark all articles as unread": "將所有文章標記為未讀", "Are you sure you want to mark all articles as unread?": "您確定要將所有文章標記為未讀嗎?", "Mark all unread": "標記全部未讀", "Article list actions": "文章列表動作", "Language": "語言" } ================================================ FILE: src/App.vue ================================================ ================================================ FILE: src/background.js ================================================ 'use strict' import { app, protocol, BrowserWindow, globalShortcut, nativeTheme, ipcMain, dialog, Notification, shell, powerMonitor, session } from 'electron' import { createProtocol } from 'vue-cli-plugin-electron-builder/lib' import installExtension, { VUEJS_DEVTOOLS } from 'electron-devtools-installer' import { ElectronBlocker } from '@cliqz/adblocker-electron' import fetch from 'cross-fetch' import { touchBar } from './main/touchbar' import { createMenu, createFeedMenu, createCategoryMenu, createArticleItemMenu } from './main/menu' import axios from 'axios' import os from 'os' import Store from 'electron-store' import log from 'electron-log' import contextMenu from 'electron-context-menu' import { autoUpdater } from 'electron-updater' import fs from 'fs' import path from 'path' import { URL, URLSearchParams } from 'url' import dayjs from 'dayjs' import i18nextMainBackend from './i18nmain.config' import { parseArticle } from './main/article' require('v8-compile-cache') const FormData = require('form-data') const i18nextBackend = require('i18next-electron-fs-backend') const isDevelopment = process.env.NODE_ENV !== 'production' autoUpdater.logger = log autoUpdater.logger.transports.file.level = 'info' contextMenu({ showInspectElement: false }) const store = new Store({ encryptionKey: process.env.VUE_APP_ENCRYPT_KEY, clearInvalidConfig: true }) // Keep a global reference of the window object, if you don't, the window will // be closed automatically when the JavaScript object is garbage collected. let win let menu let winUrl let consumerKey let code // Scheme must be registered before the app is ready protocol.registerSchemesAsPrivileged([ { scheme: 'app', privileges: { secure: true, standard: true } } ]) async function createWindow () { // Create the browser window. win = new BrowserWindow({ minWidth: 1280, minHeight: 720, width: 1400, height: 768, title: 'Raven Reader', maximizable: true, webPreferences: { // Use pluginOptions.nodeIntegration, leave this alone // See nklayman.github.io/vue-cli-plugin-electron-builder/guide/security.html#node-integration for more info webviewTag: true, contextIsolation: true, nodeIntegration: process.env.ELECTRON_NODE_INTEGRATION, preload: path.join(__dirname, 'preload.js'), disableBlinkFeatures: 'Auxclick' } }) // Maximize window on startup when not in development if (!isDevelopment && win !== null) { win.maximize() } i18nextBackend.mainBindings(ipcMain, win, fs) ElectronBlocker.fromPrebuiltAdsAndTracking(fetch).then((blocker) => { blocker.enableBlockingInSession(session.defaultSession) }) win.setTouchBar(touchBar) if (process.env.WEBPACK_DEV_SERVER_URL) { // Load the url of the dev server if in development mode winUrl = process.env.WEBPACK_DEV_SERVER_URL if (!process.env.IS_TEST) win.webContents.openDevTools() } else { createProtocol('app') winUrl = 'app://./index.html' autoUpdater.checkForUpdatesAndNotify() } // Load the index.html when not in development win.loadURL(winUrl) const proxy = store.get('settings.proxy') ? store.get('settings.proxy') : null let proxyRules = 'direct://' if (proxy) { if (proxy.http !== null && proxy.https === null) { proxyRules = `http=${proxy.http},${proxyRules}` } if (proxy.http !== null && proxy.https !== null) { proxyRules = `http=${proxy.http};https=${proxy.https},${proxyRules}` } } win.webContents.session.setProxy({ proxyRules: proxyRules, proxyBypassRules: proxy && proxy.bypass ? proxy.bypass : '' }, () => { if (win) { win.loadURL(winUrl) } }) win.on('closed', () => { win = null }) if (process.platform !== 'darwin') { globalShortcut.register('Alt+M', () => { const visible = win.isMenuBarVisible() win.setMenuBarVisibility(visible) }) } // Set up necessary bindings to update the menu items // based on the current language selected i18nextMainBackend.on('loaded', (loaded) => { i18nextMainBackend.changeLanguage(app.getLocale()) i18nextMainBackend.off('loaded') }) menu = createMenu(win, i18nextMainBackend) i18nextMainBackend.on('languageChanged', (lng) => { log.info('Language changed') menu = createMenu(win, i18nextMainBackend) }) if (store.get('settings.start_in_trays')) { win.hide() } } function signInInoreader () { shell.openExternal(`https://www.inoreader.com/oauth2/auth?client_id=${process.env.VUE_APP_INOREADER_CLIENT_ID}&redirect_uri=ravenreader://inoreader/auth&response_type=code&scope=read%20write&state=ravenreader`) } function signInPocketWithPopUp () { if (os.platform() === 'darwin') { consumerKey = process.env.VUE_APP_POCKET_MAC_KEY } if (os.platform() === 'win32') { consumerKey = process.env.VUE_APP_POCKET_WINDOWS_KEY } if (os.platform() === 'linux') { consumerKey = process.env.VUE_APP_POCKET_LINUX_KEY } axios .post( 'https://getpocket.com/v3/oauth/request', { consumer_key: consumerKey, redirect_uri: 'http://127.0.0.1' }, { withCredentials: true, headers: { 'Content-Type': 'application/json', 'X-Accept': 'application/json' } } ) .then(data => { code = data.data.code shell.openExternal(`https://getpocket.com/auth/authorize?request_token=${code}&redirect_uri=ravenreader://pocket/auth`) }) } function registerLocalResourceProtocol () { protocol.registerFileProtocol('local-resource', (request, callback) => { const url = request.url.replace(/^local-resource:\/\//, '') // Decode URL to prevent errors when loading filenames with UTF-8 chars or chars like "#" const decodedUrl = decodeURI(url) // Needed in case URL contains spaces try { return callback(decodedUrl) } catch (error) { console.error('ERROR: registerLocalResourceProtocol: Could not get file path:', error) } }) } function handleInoreader (url) { if (url.includes('ravenreader://inoreader/auth')) { const q = new URL(url).searchParams if (q.has('code')) { axios.post('https://www.inoreader.com/oauth2/token', { code: q.get('code'), client_id: process.env.VUE_APP_INOREADER_CLIENT_ID, client_secret: process.env.VUE_APP_INOREADER_CLIENT_SECRET, redirect_uri: 'ravenreader://inoreader/auth', scope: null, grant_type: 'authorization_code' }).then((data) => { data.data.expires_in = dayjs().add(data.data.expires_in, 'second').valueOf() win.webContents.send('inoreader-authenticated', data.data) }) } } if (url === 'ravenreader://pocket/auth') { axios .post( 'https://getpocket.com/v3/oauth/authorize', { consumer_key: consumerKey, code: code }, { withCredentials: true, headers: { 'Content-Type': 'application/json', 'X-Accept': 'application/json' } } ) .then(data => { data.data.consumer_key = consumerKey win.webContents.send('pocket-authenticated', data.data) }) } } app.setAsDefaultProtocolClient('ravenreader') const primaryInstance = app.requestSingleInstanceLock() if (!primaryInstance) { app.quit() } else { app.on('second-instance', (event, argv, cmd) => { event.preventDefault() const url = argv[argv.length - 1] if (win) { if (win.isMinimized()) { win.restore() } win.focus() } if (process.platform !== 'darwin') { handleInoreader(url) } }) } app.commandLine.appendSwitch('lang', app.getLocale()) app.commandLine.appendSwitch('disable-features', 'OutOfBlinkCors') // Quit when all windows are closed. app.on('window-all-closed', () => { // On macOS it is common for applications and their menu bar // to stay active until the user quits explicitly with Cmd + Q if (process.platform !== 'darwin') { app.quit() } else { i18nextBackend.clearMainBindings(ipcMain) } }) app.on('open-url', (event, url) => { handleInoreader(url) }) nativeTheme.on('updated', () => { store.set('isDarkMode', nativeTheme.shouldUseDarkColors) win.webContents.send('Dark mode', { darkmode: nativeTheme.shouldUseDarkColors }) }) ipcMain.handle('article-selected', (event, status) => { const menuItemViewBrowser = menu.getMenuItemById('view-browser') const menuItemToggleFavourite = menu.getMenuItemById('toggle-favourite') const menuItemSaveOffline = menu.getMenuItemById('save-offline') const menuItemToggleRead = menu.getMenuItemById('toggle-read') menuItemViewBrowser.enabled = true menuItemToggleFavourite.enabled = true menuItemSaveOffline.enabled = true menuItemToggleRead.enabled = true }) ipcMain.on('online-status-changed', (event, status) => { event.sender.send('onlinestatus', status) }) app.on('activate', () => { // On macOS it's common to re-create a window in the app when the // dock icon is clicked and there are no other windows open. if (BrowserWindow.getAllWindows().length === 0) { createWindow() } }) app.on('web-contents-created', (event, contents) => { contents.on('will-navigate', (event, navigationUrl) => { event.preventDefault() }) }) // This method will be called when Electron has finished // initialization and is ready to create browser windows. // Some APIs can only be used after this event occurs. app.on('ready', async () => { if (isDevelopment && !process.env.IS_TEST) { // Install Vue Devtools try { await installExtension(VUEJS_DEVTOOLS) } catch (e) { console.error('Vue Devtools failed to install:', e.toString()) } } // Modify the origin for all requests to the following urls. registerLocalResourceProtocol() createWindow() }) app.whenReady().then(() => { store.set('isDarkMode', nativeTheme.shouldUseDarkColors) if (!store.has('settings.theme_option')) { store.set('settings.theme_option', 'system') } }) app.on('before-quit', () => { app.isQuiting = true globalShortcut.unregisterAll() }) // Exit cleanly on request from parent process in development mode. if (isDevelopment) { if (process.platform === 'win32') { process.on('message', (data) => { if (data === 'graceful-exit') { app.quit() } }) } else { process.on('SIGTERM', () => { app.quit() }) } } ipcMain.handle('set-feedbin-last-fetched', (event, arg) => { if (arg) { store.set('feedbin_fetched_lastime', arg) } }) ipcMain.on('get-inoreader-last', (event, arg) => { event.returnValue = store.get('inoreader_fetched_lastime') }) ipcMain.on('get-feedbin-last', (event, arg) => { event.returnValue = store.get('feedbin_fetched_lastime') }) ipcMain.on('sort-preference', (event, arg) => { event.returnValue = store.get('settings.oldestArticles', 'on') }) ipcMain.on('get-settings', (event, arg) => { const state = {} state.cronSettings = store.get('settings.cronjob', '*/5 * * * *') state.themeOption = store.get('settings.theme_option', 'system') state.oldestArticles = store.get('settings.oldestArticles', false) state.disableImages = store.get('settings.imagePreference', false) state.fullArticleDefault = store.get('settings.fullArticlePreference', false) state.viewOriginalDefault = store.get('settings.viewOriginalPreference', false) state.recentlyReadPreference = store.get('settings.recentlyReadPreference', false) state.proxy = store.get('settings.proxy', { http: '', https: '', bypass: '' }) state.keepRead = store.get('settings.keepread', 1) if (store.has('inoreader_creds')) { state.inoreader_connected = true state.inoreader = store.get('inoreader_creds') } if (store.has('inoreader_fetched_lasttime')) { state.inoreader_last_fetched = store.get('inoreader_fetched_lasttime') } if (store.has('pocket_creds')) { state.pocket_connected = true state.pocket = store.get('pocket_creds') } if (store.has('instapaper_creds')) { state.instapaper_connected = true state.instapaper = store.get('instapaper_creds') } if (store.has('fever_creds')) { state.fever_connected = true state.fever = store.get('fever_creds') } if (store.has('selfhost_creds')) { state.selfhost_connected = true state.selfhost = store.get('selfhost_creds') } if (store.has('feedbin_creds')) { state.feedbin_connected = true state.feedbin = store.get('feedbin_creds', JSON.stringify({ endpoint: 'https://api.feedbin.com/v2/', email: null, password: null })) } event.returnValue = state }) ipcMain.on('get-setting-item', (event, arg) => { event.returnValue = store.get(arg) }) ipcMain.handle('set-settings-item', (event, arg) => { switch (arg.type) { case 'set': store.set(arg.key, arg.data) break case 'delete': store.delete(arg.key, arg.data) break } }) ipcMain.on('get-locale', (event) => { event.returnValue = app.getLocale() }) ipcMain.on('get-dark', (event) => { event.returnValue = store.get('isDarkMode') }) ipcMain.on('proxy-settings-get', (event) => { event.returnValue = store.get('settings.proxy', null) }) ipcMain.handle('export-opml', (event, arg) => { fs.unlink( `${app.getPath('downloads')}/subscriptions.opml`, err => { if (err && err.code !== 'ENOENT') throw err fs.writeFile( `${app.getPath( 'downloads' )}/subscriptions.opml`, arg, { flag: 'w', encoding: 'utf8' }, err => { if (err) throw err log.info('XML Saved') const notification = new Notification({ title: 'Raven Reader', body: 'Exported all feeds successfully to downloads folder.' }) notification.show() } ) } ) }) ipcMain.on('login-pocket', (event) => { event.returnValue = signInPocketWithPopUp() }) ipcMain.on('login-inoreader', (event) => { event.returnValue = signInInoreader() }) ipcMain.handle('context-menu', (event, arg) => { if (arg.type === 'feed') { createFeedMenu(arg.data, win, i18nextMainBackend) } if (arg.type === 'category') { createCategoryMenu(arg.data, win, i18nextMainBackend) } if (arg.type === 'article') { createArticleItemMenu(arg.data, win, i18nextMainBackend) } }) ipcMain.handle('parse-article', async (event, url) => { return await parseArticle(url) }) ipcMain.handle('instapaper-login', async (event, data) => { const result = await axios.post('https://www.instapaper.com/api/authenticate', {}, { auth: data }) return result.data }) ipcMain.handle('instapaper-save', async (event, data) => { const result = await axios.post(`https://www.instapaper.com/api/add?url=${data.url}`, {}, { auth: { username: data.username, password: data.password } }) return result.data }) ipcMain.handle('save-pocket', async (event, data) => { const result = await axios.post('https://getpocket.com/v3/add', { url: data.url, access_token: data.credential.access_token, consumer_key: data.credential.consumer_key }) return result.data }) ipcMain.handle('fever-login', async (event, data) => { const formData = new FormData() formData.append('api_key', data.formData) const config = { url: `${data.endpoint}?api`, method: 'post', data: formData, headers: { ...formData.getHeaders() } } const result = await axios(config) return result.data }) ipcMain.handle('fever-endpoint-execute', async (event, data) => { const formData = new FormData() formData.append('api_key', data.formData) const result = await axios.post(data.endpoint, formData, { headers: { ...formData.getHeaders() } }) return result.data }) ipcMain.handle('google-login', async (event, data) => { const params = new URLSearchParams(data.formData) const result = await axios.post(data.endpoint, params.toString()) return result.data }) ipcMain.handle('inoreader-endpoint-fetch', async (event, data) => { const result = await axios.get(data.endpoint, { headers: { Authorization: `Bearer ${data.access_token}` } }) return result.data }) ipcMain.handle('inoreader-endpoint-refresh', async (event, data) => { const result = axios.post(data.endpoint, data.formData) return result.data }) ipcMain.handle('inoreader-endpoint-execute', async (event, data) => { const result = await axios.post(data.endpoint, data.formData, { headers: { Authorization: `Bearer ${data.access_token}` } }) return result.data }) ipcMain.handle('google-endpoint-fetch', async (event, data) => { const result = await axios.get(data.endpoint, { headers: { Authorization: `GoogleLogin auth=${data.formData.auth}` } }) return result.data }) ipcMain.handle('google-endpoint-execute', async (event, data) => { const result = await axios.post(data.endpoint, data.formData.data, { headers: { Authorization: `GoogleLogin auth=${data.formData.auth}` } }) return result.data }) ipcMain.handle('feedbin-login', async (event, data) => { const result = await axios.get(data.endpoint, { auth: { username: data.creds.email, password: data.creds.password } }) return result.data }) ipcMain.handle('feedbin-endpoint-fetch', async (event, data) => { const result = await axios.get(data.endpoint, { auth: { username: data.creds.email, password: data.creds.password } }) return result.data }) ipcMain.handle('feedbin-endpoint-execute', async (event, data) => { const result = await axios.post(data.endpoint, data.formData, { auth: { username: data.creds.email, password: data.creds.password } }) return result.data }) powerMonitor.on('resume', () => { win.webContents.send('power-resume') }) autoUpdater.on('checking-for-update', () => { log.info('Checking for update...') }) autoUpdater.on('update-not-available', (info) => { log.info('Update not available.') }) autoUpdater.on('error', (error) => { log.info(error == null ? 'unknown' : (error.stack || error).toString()) }) autoUpdater.on('update-downloaded', (info) => { log.info('Update downloaded') dialog.showMessageBox({ title: 'Install Updates', message: 'Updates downloaded, application will be quit for update...' }, () => { setImmediate(() => autoUpdater.quitAndInstall()) }) }) autoUpdater.on('download-progress', (progressObj) => { let logMessage = 'Download speed: ' + progressObj.bytesPerSecond logMessage = logMessage + ' - Downloaded ' + progressObj.percent + '%' logMessage = logMessage + ' (' + progressObj.transferred + '/' + progressObj.total + ')' log.info(logMessage) }) ================================================ FILE: src/bridge/electron.js ================================================ /* eslint-disable no-undef */ import { app, ipcRenderer, shell, clipboard } from 'electron' import md5 from 'crypto-js/md5' import path from 'path' export default { localePath: () => { return path.join(__static, './locales/{{lng}}/{{ns}}.json') }, localeMissingPath: () => { return path.join(__static, './locales/{{lng}}/{{ns}}.missing.json') }, currentLocale: () => { return ipcRenderer.send('get-locale') }, convertToMD5: (text) => { return md5(text) }, copyToClipboard: (url) => { clipboard.writeText(url, 'selection') }, removeListeners: () => { ipcRenderer.removeAllListeners() }, articleSelected: () => { ipcRenderer.invoke('article-selected') }, exportOpml: (xmlData) => { ipcRenderer.invoke('export-opml', xmlData) }, restartApp: () => { app.relaunch() app.exit(0) }, loginPocket: () => { return ipcRenderer.send('login-pocket') }, loginInoreader: () => { return ipcRenderer.send('login-inoreader') }, openExternal: (href) => { shell.openExternal(href) }, createContextMenu: (type, data) => { return ipcRenderer.invoke('context-menu', { type: type, data: data }) } } ================================================ FILE: src/bridge/electronstore.js ================================================ import { ipcRenderer } from 'electron' const electronStoreBridge = { getSortPreference: () => { return ipcRenderer.sendSync('sort-preference') }, setFeedbinLastFetched: (timestamp) => { ipcRenderer.invoke('set-feedbin-last-fetched', timestamp) }, inoreaderLastFetched: () => { return ipcRenderer.sendSync('get-inoreader-last') }, getFeedbinLastFetched: () => { return ipcRenderer.sendSync('get-feedbin-last') }, getSettings: () => { return ipcRenderer.sendSync('get-settings') }, getIsDarkMode: () => { return ipcRenderer.sendSync('get-dark') }, getSettingItem: (key) => { return ipcRenderer.sendSync('get-setting-item', key) }, storeSetSettingItem: (type, key, data = null) => { ipcRenderer.invoke('set-settings-item', { type: type, key: key, data: data }) }, getProxySettings: () => { return ipcRenderer.send('proxy-settings-get') } } export default electronStoreBridge ================================================ FILE: src/bridge/feedbin.js ================================================ import { ipcRenderer } from 'electron' export default { login: async (endpoint, creds) => { return await ipcRenderer.invoke('feedbin-login', { endpoint: endpoint, creds: { email: creds.email, password: creds.password } }) }, fetch: async (endpoint, creds) => { return await ipcRenderer.invoke('feedbin-endpoint-fetch', { endpoint: endpoint, creds: { email: creds.email, password: creds.password } }) }, post: async (endpoint, formData, creds) => { return await ipcRenderer.invoke('feedbin-endpoint-execute', { endpoint: endpoint, formData: formData, creds: { email: creds.email, password: creds.password } }) } } ================================================ FILE: src/bridge/fever.js ================================================ import { ipcRenderer } from 'electron' export default { login: async (endpoint, formData) => { return await ipcRenderer.invoke('fever-login', { endpoint: endpoint, formData: formData }) }, post: async (endpoint, formData) => { return await ipcRenderer.invoke('fever-endpoint-execute', { endpoint: endpoint, formData: formData }) } } ================================================ FILE: src/bridge/greader.js ================================================ import { ipcRenderer } from 'electron' export default { login: async (endpoint, formData) => { return await ipcRenderer.invoke('google-login', { endpoint: endpoint, formData: formData }) }, fetch: async (endpoint, formData) => { return await ipcRenderer.invoke('google-endpoint-fetch', { endpoint: endpoint, formData: formData }) }, post: async (endpoint, formData) => { return await ipcRenderer.invoke('google-endpoint-execute', { endpoint: endpoint, formData: formData }) } } ================================================ FILE: src/bridge/inoreader.js ================================================ import { ipcRenderer } from 'electron' export default { fetch: async (endpoint, accessToken) => { return await ipcRenderer.invoke('inoreader-endpoint-fetch', { endpoint: endpoint, access_token: accessToken.access_token }) }, refresh: async (endpoint, formData) => { return await ipcRenderer.invoke('inoreader-endpoint-refresh', { endpoint: endpoint, formData: formData }) }, post: async (endpoint, formData, accessToken) => { return await ipcRenderer.invoke('inoreader-endpoint-execute', { endpoint: endpoint, formData: formData, access_token: accessToken.access_token }) } } ================================================ FILE: src/bridge/instapaper.js ================================================ import { ipcRenderer } from 'electron' export default { login: async (username, password) => { return await ipcRenderer.invoke('instapaper-login', { username: username, password: password }) }, save: async (url, username, password) => { return await ipcRenderer.invoke('instapaper-save', { url: url, username: username, password: password }) } } ================================================ FILE: src/bridge/mercury.js ================================================ import { ipcRenderer } from 'electron' export default { parseArticle: async (url) => { return await ipcRenderer.invoke('parse-article', url) } } ================================================ FILE: src/bridge/pocket.js ================================================ import { ipcRenderer } from 'electron' export default { save: async (url, credential) => { return await ipcRenderer.invoke('save-pocket', { url: url, credential: credential }) } } ================================================ FILE: src/bridge/rss.js ================================================ import RssParser from 'rss-parser' import rssFinder from 'rss-finder' import normalizeUrl from 'normalize-url' import { XMLValidator, XMLParser } from 'fast-xml-parser' import fetch from 'node-fetch' const parser = new RssParser({ requestOptions: { rejectUnauthorized: false }, defaultRSS: 2.0, maxRedirects: 10, headers: { 'User-Agent': 'Raven Reader' }, customFields: { item: ['media:group', 'media:title', 'media:content', 'media:description'] } }) export default { async checkXml (link) { const content = await fetch(link, { cors: 'no-cors', referrer: '', credentials: 'omit', redirect: 'follow' }) const data = await content.text() const validateXml = XMLValidator.validate(data, { allowBooleanAttributes: true }) return validateXml === true }, async parseRssUrl (url) { const content = await fetch( normalizeUrl(url, { stripWWW: false, removeTrailingSlash: false }), { cors: 'no-cors', referrer: '', credentials: 'omit', redirect: 'follow' } ) const data = await content.text() return await parser.parseString(data) }, async findRss (url) { return await rssFinder({ url: normalizeUrl(url, { stripWWW: false, removeTrailingSlash: false }), gotOptions: { retryCount: 0, https: { rejectUnauthorized: false } } // feedParserOptions: { // feedUrl: url // } }) }, async fetchRss (url) { const options = { ignoreAttributes: false } const parser = new XMLParser(options) const response = await fetch(normalizeUrl(url, { stripWWW: false, removeTrailingSlash: false })) const responseData = await response.text() return parser.parse(responseData) } } ================================================ FILE: src/bridge/sanitize.js ================================================ import sanitizeHtml from 'sanitize-html' export default { sanitizeHtml: (content) => { return sanitizeHtml(content, { allowedTags: [ 'address', 'article', 'aside', 'footer', 'header', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'hgroup', 'main', 'nav', 'section', 'blockquote', 'dd', 'div', 'dl', 'dt', 'figcaption', 'figure', 'hr', 'li', 'main', 'ol', 'p', 'pre', 'ul', 'a', 'abbr', 'b', 'bdi', 'bdo', 'br', 'cite', 'code', 'data', 'dfn', 'em', 'i', 'kbd', 'mark', 'q', 'rb', 'rp', 'rt', 'rtc', 'ruby', 's', 'samp', 'small', 'span', 'strong', 'sub', 'sup', 'time', 'u', 'var', 'wbr', 'caption', 'col', 'colgroup', 'table', 'tbody', 'td', 'tfoot', 'th', 'thead', 'tr', 'img', 'iframe' ] }) } } ================================================ FILE: src/components/AppIcon.vue ================================================ ================================================ FILE: src/components/ArticleDetail.vue ================================================ /* eslint-disable vue/no-v-html */