Compare commits

...

49 Commits

Author SHA1 Message Date
38ba8852a3 Release 0.8.3 2019-04-13 14:18:10 +02:00
3533359fae Use single task activity 2019-04-13 13:09:01 +02:00
0a988d1c69 Enable new translations 2019-04-12 19:19:35 +02:00
5f9e65cc9b Fix lint issues on new strings 2019-04-12 19:07:41 +02:00
026188268d Translations (#1886)
* Translated using Weblate (Czech)

Currently translated at 99.8% (426 of 427 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/cs/

* Translated using Weblate (Hindi)

Currently translated at 99.8% (426 of 427 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/hi/

* Translated using Weblate (Korean)

Currently translated at 79.2% (338 of 427 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/ko/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (427 of 427 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/es/

* Translated using Weblate (Korean)

Currently translated at 81.5% (348 of 427 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/ko/

Translated using Weblate (Korean)

Currently translated at 81.5% (348 of 427 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/ko/

* Translated using Weblate (Korean)

Currently translated at 94.1% (402 of 427 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/ko/

* Translated using Weblate (French)

Currently translated at 100.0% (427 of 427 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/fr/

* Translated using Weblate (Hindi)

Currently translated at 99.8% (426 of 427 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/hi/

* Translated using Weblate (Korean)

Currently translated at 95.3% (407 of 427 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/ko/

* Translated using Weblate (Dutch)

Currently translated at 100.0% (427 of 427 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/nl/

* Translated using Weblate (Portuguese (Brazil))

Currently translated at 99.8% (426 of 427 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/pt_BR/

* Added translation using Weblate (Sardinian)

* Translated using Weblate (Sardinian)

Currently translated at 52.7% (225 of 427 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/sc/

* Added translation using Weblate (Filipino)

* Translated using Weblate (Filipino)

Currently translated at 5.2% (22 of 427 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/fil/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (427 of 427 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/es/

* Translated using Weblate (Filipino)

Currently translated at 11.2% (48 of 427 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/fil/

* Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (427 of 427 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/pt_BR/

* Translated using Weblate (Turkish)

Currently translated at 100.0% (427 of 427 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/tr/

* Translated using Weblate (Sardinian)

Currently translated at 56.4% (241 of 427 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/sc/

* Translated using Weblate (Portuguese)

Currently translated at 81.5% (348 of 427 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/pt/

* Translated using Weblate (Portuguese)

Currently translated at 81.5% (348 of 427 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/pt/

* Translated using Weblate (Serbian)

Currently translated at 77.5% (331 of 427 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/sr/

* Translated using Weblate (Sardinian)

Currently translated at 71.7% (306 of 427 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/sc/

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (427 of 427 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/zh_Hans/

* Translated using Weblate (Russian)

Currently translated at 100.0% (427 of 427 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/ru/

* Translated using Weblate (Ukrainian)

Currently translated at 100.0% (427 of 427 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/uk/

* Translated using Weblate (Sardinian)

Currently translated at 100.0% (427 of 427 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/sc/

* Translated using Weblate (Bulgarian)

Currently translated at 100.0% (427 of 427 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/bg/
(cherry picked from commit ab854420b5e52f145146da9df5f2f4ff2ee283f1)
2019-04-12 19:04:44 +02:00
0e3464457c Remove internal sources 2019-04-12 19:05:18 +02:00
56195434e7 Add intent filter for external queries 2019-04-12 18:40:04 +02:00
ba2194f435 Load urls inside webview 2019-04-12 17:29:02 +02:00
e7df172da1 Provide default web view client so that redirections work 2019-04-08 10:13:58 +02:00
e7606e6dca Add option to open manga details in a WebView 2019-04-08 02:08:40 +02:00
8d4c0f505c Fix shared files not deleted from internal cache 2019-04-07 14:58:40 +02:00
8f2878a841 Added search intent handler and Google Search Action, for the global search (#1787)
* Added search intent handler

* Added support for Google Search actions
2019-04-03 10:25:52 +02:00
77296348a0 add option to skip chapters marked read (#1791) 2019-04-03 10:22:32 +02:00
a62a7d5330 Feature/shikomori track (#1905)
* Add shikomori track

* Fix char 'M'

* Fix date in search
2019-04-03 10:14:37 +02:00
bf60aae9d8 Fix crashes below L 2019-04-03 09:47:07 +02:00
ecc1520100 Use OkHttp to solve the challenge 2019-04-02 00:26:03 +02:00
f1f6a2b341 Test solving Cloudflare's challenge with WebView 2019-04-01 17:20:13 +02:00
55bf1c31a6 Set explicit autobackup rules 2019-04-01 17:14:37 +02:00
e47dd3d587 Add 32-bit color mode to reader settings (#1941)
* add ARGB_8888 mode to reader settings

* Only show option on Oreo or later.
Only show option in settings screen.
2019-03-30 14:21:35 +01:00
af0e3a278f Fix discord link (#1951)
Fix discord link
2019-03-30 06:39:10 -04:00
493ad93957 Release 0.8.2 2019-03-27 13:21:44 +01:00
dbe8f3cfbe Fix bug with update lib and parse chapters (#1927)
* Fix bug with update lib and parse chapters

* Fix else condition
2019-03-25 14:53:17 +01:00
08cdac968d Fix strings and add new languages 2019-03-25 14:52:07 +01:00
f12d5ba689 Storio imported from Jitpack. Also fix an issue with the progress bar animation on the reader 2019-03-22 23:06:05 +01:00
0afd77d110 Update ISSUE_TEMPLATE.md 2019-03-22 19:26:04 +01:00
7551941ef2 [Cloudflare] Fix recent CF JS Challenge error that calls DOM (#1919)
* [Cloudflare] Fix recent CF JS Challenge error that calls DOM

* Replace `atob` to pure js version. (was node.js API which invalid)

* Use `atob` as native function `Base64.decode()``

* Use okio Base64 decoder instead of Android one.
2019-03-22 19:25:21 +01:00
9ca0307e1c [Cloudflare] Fix 503 due to missing value in js challenge. (#1913)
Related issues: inorichi/tachiyomi-extensions#951
2019-03-21 08:48:03 +01:00
9a6f8be28c Remove F-Droid on README.md (#1891)
* Remove F-Droid on README.md

Seems F-Droid is not updated anymore.

* Remove unnecessary whitespace
2019-03-18 14:58:50 +01:00
9baf3b5a09 Release 0.8.1 2019-03-15 16:50:13 +01:00
ca3f0873f3 Extract hardcoded strings from layouts 2019-03-15 08:48:12 +01:00
adb0201449 Translations (#1750)
* Translated using Weblate (Indonesian)

Currently translated at 100.0% (425 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/id/

* Added translation using Weblate (Czech)

* Translated using Weblate (Czech)

Currently translated at 45.6% (194 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/cs/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (425 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/es/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (425 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/es/

* Added translation using Weblate (Greek)

* Translated using Weblate (Greek)

Currently translated at 99.8% (424 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/el/

* Translated using Weblate (Italian)

Currently translated at 100.0% (425 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/it/

* Translated using Weblate (Romanian)

Currently translated at 100.0% (425 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/ro/

* Added translation using Weblate (Swedish)

* Translated using Weblate (Swedish)

Currently translated at 100.0% (425 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/sv/

* Translated using Weblate (Czech)

Currently translated at 45.6% (194 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/cs/

* Translated using Weblate (Italian)

Currently translated at 100.0% (425 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/it/

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (425 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/zh_Hans/

* Translated using Weblate (Romanian)

Currently translated at 100.0% (425 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/ro/

* Translated using Weblate (German)

Currently translated at 100.0% (425 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/de/

* Translated using Weblate (Russian)

Currently translated at 98.1% (417 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/ru/

* Translated using Weblate (Russian)

Currently translated at 98.4% (418 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/ru/

* Translated using Weblate (Russian)

Currently translated at 98.4% (418 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/ru/

* Translated using Weblate (Italian)

Currently translated at 100.0% (425 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/it/

* Translated using Weblate (Bulgarian)

Currently translated at 100.0% (425 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/bg/

* Translated using Weblate (Portuguese)

Currently translated at 80.5% (342 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/pt/

* Translated using Weblate (Portuguese)

Currently translated at 80.5% (342 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/pt/

* Translated using Weblate (Portuguese)

Currently translated at 80.5% (342 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/pt/

* Translated using Weblate (Russian)

Currently translated at 98.8% (420 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/ru/

* Translated using Weblate (Russian)

Currently translated at 98.8% (420 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/ru/

* Translated using Weblate (Hindi)

Currently translated at 100.0% (425 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/hi/

* Translated using Weblate (Russian)

Currently translated at 99.3% (422 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/ru/

* Translated using Weblate (Bulgarian)

Currently translated at 100.0% (425 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/bg/

* Translated using Weblate (Bulgarian)

Currently translated at 100.0% (425 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/bg/

* Translated using Weblate (Bulgarian)

Currently translated at 97.9% (416 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/bg/

* Translated using Weblate (Bengali)

Currently translated at 99.5% (423 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/bn/

* Translated using Weblate (Czech)

Currently translated at 80.7% (343 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/cs/

* Translated using Weblate (Russian)

Currently translated at 100.0% (425 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/ru/

* Translated using Weblate (Russian)

Currently translated at 100.0% (425 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/ru/

* Translated using Weblate (Russian)

Currently translated at 100.0% (425 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/ru/

* Translated using Weblate (Russian)

Currently translated at 100.0% (425 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/ru/

* Translated using Weblate (Russian)

Currently translated at 100.0% (425 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/ru/

* Translated using Weblate (Russian)

Currently translated at 100.0% (425 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/ru/

* Translated using Weblate (Russian)

Currently translated at 100.0% (425 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/ru/

* Translated using Weblate (Czech)

Currently translated at 100.0% (425 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/cs/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (425 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/es/

* Translated using Weblate (Vietnamese)

Currently translated at 86.8% (369 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/vi/

* Translated using Weblate (Russian)

Currently translated at 100.0% (425 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/ru/

* Translated using Weblate (Japanese)

Currently translated at 43.1% (183 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/ja/

* Translated using Weblate (Bulgarian)

Currently translated at 99.8% (424 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/bg/

* Translated using Weblate (Greek)

Currently translated at 99.8% (424 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/el/

* Translated using Weblate (Bengali)

Currently translated at 99.8% (424 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/bn/

* Translated using Weblate (Vietnamese)

Currently translated at 88.0% (374 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/vi/

* Translated using Weblate (English)

Currently translated at 100.0% (425 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/en/

* Added translation using Weblate (Norwegian Bokmål)

* Translated using Weblate (Norwegian Bokmål)

Currently translated at 31.8% (135 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/nb_NO/

* Translated using Weblate (Hindi)

Currently translated at 100.0% (425 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/hi/

* Translated using Weblate (Vietnamese)

Currently translated at 90.8% (386 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/vi/

* Added translation using Weblate (Thai)

* Translated using Weblate (Thai)

Currently translated at 2.4% (10 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/th/

* Translated using Weblate (Arabic)

Currently translated at 99.8% (424 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/ar/

* Translated using Weblate (Czech)

Currently translated at 100.0% (425 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/cs/

* Translated using Weblate (Polish)

Currently translated at 100.0% (425 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/pl/

* Added translation using Weblate (Catalan)

* Translated using Weblate (Catalan)

Currently translated at 19.1% (81 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/ca/

* Translated using Weblate (Polish)

Currently translated at 100.0% (425 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/pl/

* Translated using Weblate (Catalan)

Currently translated at 32.9% (140 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/ca/

* Translated using Weblate (Bulgarian)

Currently translated at 100.0% (425 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/bg/

* Translated using Weblate (Catalan)

Currently translated at 45.9% (195 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/ca/

* Translated using Weblate (French)

Currently translated at 100.0% (425 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/fr/

* Translated using Weblate (French)

Currently translated at 100.0% (425 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/fr/

* Translated using Weblate (Portuguese)

Currently translated at 81.2% (345 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/pt/

* Translated using Weblate (Hungarian)

Currently translated at 39.8% (169 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/hu/

* Added translation using Weblate (Serbian)

* Translated using Weblate (Serbian)

Currently translated at 57.2% (243 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/sr/

* Translated using Weblate (Serbian)

Currently translated at 75.1% (319 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/sr/

* Translated using Weblate (Dutch)

Currently translated at 87.3% (371 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/nl/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (425 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/es/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (425 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/es/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (425 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/es/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (425 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/es/
2019-03-15 08:41:10 +01:00
cf293642fb Fix Glide exceptions 2019-03-14 21:44:20 +01:00
10e1106760 [Cloudflare] Fix SyntaxError due to recent js challenge changes. (#1876)
From Anorov/cloudflare-scrape#193
Related issues: inorichi/tachiyomi-extensions#894
2019-03-14 17:45:21 +01:00
3f2d375a53 Reduce priority of jcenter repository 2019-03-14 17:32:08 +01:00
f8e121ee06 [Anilist] Fix date parsing error (#1805)
fix #1804
2019-01-28 09:03:03 +01:00
0ee005579b [Anilist] Fix tracking for re-reading status (#1795) 2019-01-12 17:08:13 +01:00
6ecd7fced8 Fix Amoled navigation bar colour on OxygenOS (#1762) 2018-12-07 07:25:06 +01:00
aeaf4d78f8 Bundle SQLite. Fixes tachiyomi not working on KitKat. Making a backup before using this version is recommended, but everything should work. 2018-11-26 13:05:42 +01:00
7baf0ddcc2 Translations (#1747)
* Translated using Weblate (Italian)

Currently translated at 100.0% (417 of 417 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/it/

* Translated using Weblate (Italian)

Currently translated at 100.0% (417 of 417 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/it/

* Translated using Weblate (Italian)

Currently translated at 100.0% (417 of 417 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/it/

* Translated using Weblate (Polish)

Currently translated at 100.0% (417 of 417 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/pl/

* Translated using Weblate (Indonesian)

Currently translated at 100.0% (417 of 417 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/id/

* Translated using Weblate (Indonesian)

Currently translated at 100.0% (417 of 417 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/id/

* Translated using Weblate (Spanish)

Currently translated at 90.8% (379 of 417 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/es/

* Translated using Weblate (French)

Currently translated at 97.3% (406 of 417 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/fr/

* Translated using Weblate (Portuguese (Brazil))

Currently translated at 98.0% (409 of 417 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/pt_BR/

* Translated using Weblate (Russian)

Currently translated at 97.6% (407 of 417 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/ru/

* Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (417 of 417 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/pt_BR/

* Translated using Weblate (Hindi)

Currently translated at 100.0% (417 of 417 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/hi/

* Translated using Weblate (Polish)

Currently translated at 100.0% (417 of 417 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/pl/

* Translated using Weblate (Italian)

Currently translated at 100.0% (417 of 417 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/it/

* Translated using Weblate (Arabic)

Currently translated at 100.0% (417 of 417 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/ar/

* Added translation using Weblate (Turkish)

* Translated using Weblate (Turkish)

Currently translated at 100.0% (417 of 417 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/tr/

* Translated using Weblate (Portuguese)

Currently translated at 67.6% (282 of 417 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/pt/

* Update translation files

Updated by Clean-up translation files hook in Weblate.

* Translated using Weblate (Turkish)

Currently translated at 100.0% (424 of 424 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/tr/

* Translated using Weblate (French)

Currently translated at 100.0% (424 of 424 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/fr/

* Translated using Weblate (Bengali)

Currently translated at 97.4% (413 of 424 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/bn/

* Translated using Weblate (Bulgarian)

Currently translated at 98.5% (418 of 424 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/bg/

* Translated using Weblate (Hindi)

Currently translated at 100.0% (424 of 424 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/hi/

* Translated using Weblate (Arabic)

Currently translated at 98.1% (416 of 424 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/ar/

* Added translation using Weblate (Chinese (Simplified))

* Translated using Weblate (Chinese (Simplified))

Currently translated at 17.4% (74 of 424 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/zh_Hans/

* Added translation using Weblate (Thai)

* Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (424 of 424 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/pt_BR/

* Translated using Weblate (Russian)

Currently translated at 99.0% (420 of 424 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/ru/

* Translated using Weblate (Malay)

Currently translated at 86.5% (367 of 424 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/ms/

* Translated using Weblate (Italian)

Currently translated at 100.0% (424 of 424 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/it/

* Translated using Weblate (Dutch)

Currently translated at 87.5% (371 of 424 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/nl/

* Translated using Weblate (Spanish)

Currently translated at 93.3% (396 of 424 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/es/

* Translated using Weblate (Portuguese)

Currently translated at 75.2% (319 of 424 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/pt/

* Translated using Weblate (Japanese)

Currently translated at 8.9% (38 of 424 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/ja/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (424 of 424 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/es/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (424 of 424 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/es/

* Deleted translation using Weblate (Thai)

* Translated using Weblate (Polish)

Currently translated at 100.0% (424 of 424 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/pl/

* Translated using Weblate (Chinese (Simplified))

Currently translated at 19.8% (84 of 424 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/zh_Hans/

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (424 of 424 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/zh_Hans/

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (424 of 424 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/zh_Hans/

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (425 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/zh_Hans/

* Translated using Weblate (Hindi)

Currently translated at 100.0% (425 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/hi/

* Translated using Weblate (Turkish)

Currently translated at 100.0% (425 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/tr/

* Translated using Weblate (Italian)

Currently translated at 100.0% (425 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/it/

* Added translation using Weblate (Ukrainian)

* Translated using Weblate (Ukrainian)

Currently translated at 50.4% (214 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/uk/

* Translated using Weblate (Arabic)

Currently translated at 100.0% (425 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/ar/

* Translated using Weblate (Portuguese)

Currently translated at 75.3% (320 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/pt/

* Translated using Weblate (Portuguese)

Currently translated at 75.3% (320 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/pt/

* Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (425 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/pt_BR/

* Translated using Weblate (Russian)

Currently translated at 97.6% (415 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/ru/

* Translated using Weblate (Ukrainian)

Currently translated at 54.6% (232 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/uk/

* Translated using Weblate (Bulgarian)

Currently translated at 100.0% (425 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/bg/

* Translated using Weblate (French)

Currently translated at 100.0% (425 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/fr/

* Translated using Weblate (Hungarian)

Currently translated at 39.3% (167 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/hu/

* Translated using Weblate (Ukrainian)

Currently translated at 100.0% (425 of 425 strings)

Translation: Tachiyomi/Strings
Translate-URL: https://hosted.weblate.org/projects/tachiyomi/strings/uk/
2018-11-23 21:47:00 +01:00
d79e141fe5 Fix issue with center zoom position 2018-11-17 16:23:03 +01:00
030071e659 Changed repository order for gradle (#1728) 2018-11-17 10:15:03 +01:00
9cbf226cfd MAL API Workaround (#1647)
* Mal API workaround

* remove unused import

* Reuse existing token preference

* Minor code format
2018-11-11 14:00:47 +01:00
36aabf23e1 Optimize library query 2018-11-09 11:59:17 +01:00
8b67255186 kitsu search fix (#1681) 2018-10-27 19:34:05 +02:00
3186661420 Filter local manga as downloaded (#1674)
* Filter local manga as downloaded

* Filter local manga chapters as downloaded
2018-10-27 19:33:43 +02:00
46896d9e86 Fix potential NPE at cover image selector (#1665) 2018-10-27 19:17:35 +02:00
2c4fd340c8 Restore dark blue theme. Closes #1302 2018-10-27 19:10:11 +02:00
ae6d052978 Update Anilist API search to return 50 results (#1657)
* Update Anilist API search to return 50 results

This will help alleviate not being able to find manga with generic names
such as Monster

* Add description to Anilist search dialogue
2018-10-27 19:02:10 +02:00
974891a085 Allow pausing downloads from progress notification (#1637) 2018-10-27 19:01:56 +02:00
110 changed files with 6747 additions and 3527 deletions

View File

@ -4,6 +4,8 @@
**App version:**
**Android version:**
**Issue/Request:**
**Steps to reproduce (if applicable)**

View File

@ -1,6 +1,6 @@
| Build | Stable | Dev | Contribute | Contact |
|-------|----------|---------|------------|---------|
| [![Travis](https://img.shields.io/travis/inorichi/tachiyomi.svg)](https://travis-ci.org/inorichi/tachiyomi) | [![stable release](https://img.shields.io/github/release/inorichi/tachiyomi.svg?maxAge=3600&label=download%20(autoupdate%20included))](https://github.com/inorichi/tachiyomi/releases) | [![latest dev build](https://img.shields.io/badge/download-latest%20build-blue.svg)](http://tachiyomi.kanade.eu/latest) [![fdroid dev](https://img.shields.io/badge/autoupdate-wiki-blue.svg)](//github.com/inorichi/tachiyomi/wiki/F-Droid-for-dev-versions) | [![Translation status](https://hosted.weblate.org/widgets/tachiyomi/-/svg-badge.svg)](https://hosted.weblate.org/engage/tachiyomi/?utm_source=widget) | [![Discord](https://img.shields.io/discord/349436576037732353.svg)](https://discord.gg/tachiyomi) |
| [![Travis](https://img.shields.io/travis/inorichi/tachiyomi.svg)](https://travis-ci.org/inorichi/tachiyomi) | [![stable release](https://img.shields.io/github/release/inorichi/tachiyomi.svg?maxAge=3600&label=download%20(autoupdate%20included))](https://github.com/inorichi/tachiyomi/releases) | [![latest dev build](https://img.shields.io/badge/download-latest%20build-blue.svg)](http://tachiyomi.kanade.eu/latest) | [![Translation status](https://hosted.weblate.org/widgets/tachiyomi/-/svg-badge.svg)](https://hosted.weblate.org/engage/tachiyomi/?utm_source=widget) | [![Discord](https://img.shields.io/discord/349436576037732353.svg)](https://discord.gg/tachiyomi) |
# ![app icon](./.github/readme-images/app-icon.png)Tachiyomi
@ -23,7 +23,7 @@ Features include:
## Download
Get the app from our [releases page](https://github.com/inorichi/tachiyomi/releases).
If you want to try new features before they get to the stable release, you can download the dev version [here](http://tachiyomi.kanade.eu/latest) (auto-updates not included), or add our [F-Droid repo](https://github.com/inorichi/tachiyomi/wiki/F-Droid-for-dev-versions).
If you want to try new features before they get to the stable release, you can download the dev version [here](http://tachiyomi.kanade.eu/latest). (auto-updates not included)
## Issues, Feature Requests and Contributing
@ -64,7 +64,7 @@ Catalogue requests should be created at https://github.com/inorichi/tachiyomi-ex
## FAQ
[See our wiki.](https://github.com/inorichi/tachiyomi/wiki/FAQ)
You can also reach out to us on [Discord](https://discord.gg/WrBkRk4).
You can also reach out to us on [Discord](https://discord.gg/tachiyomi).
## License

View File

@ -38,8 +38,8 @@ android {
minSdkVersion 16
targetSdkVersion 27
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
versionCode 38
versionName "0.8.0"
versionCode 41
versionName "0.8.3"
buildConfigField "String", "COMMIT_COUNT", "\"${getCommitCount()}\""
buildConfigField "String", "COMMIT_SHA", "\"${getGitSha()}\""
@ -118,7 +118,7 @@ dependencies {
implementation 'com.android.support.constraint:constraint-layout:1.1.2'
implementation 'com.android.support:multidex:1.0.2'
implementation 'com.android.support:multidex:1.0.3'
standardImplementation 'com.google.firebase:firebase-core:11.8.0'
@ -161,7 +161,10 @@ dependencies {
implementation 'com.github.gabrielemariotti.changeloglib:changelog:2.1.0'
// Database
implementation "com.pushtorefresh.storio:sqlite:1.13.0"
implementation 'android.arch.persistence:db:1.0.0'
implementation 'com.github.inorichi.storio:storio-common:8be19de@aar'
implementation 'com.github.inorichi.storio:storio-sqlite:8be19de@aar'
implementation 'io.requery:sqlite-android:3.25.2'
// Model View Presenter
final nucleus_version = '3.0.0'

View File

@ -14,6 +14,7 @@
<application
android:name=".App"
android:allowBackup="true"
android:fullBackupContent="@xml/backup_rules"
android:hardwareAccelerated="true"
android:icon="@mipmap/ic_launcher"
android:roundIcon="@mipmap/ic_launcher_round"
@ -22,12 +23,21 @@
android:theme="@style/Theme.Tachiyomi">
<activity
android:name=".ui.main.MainActivity"
android:launchMode="singleTop">
android:launchMode="singleTask">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
<action android:name="com.google.android.gms.actions.SEARCH_ACTION"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
<intent-filter>
<action android:name="eu.kanade.tachiyomi.SEARCH" />
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
<meta-data android:name="android.app.searchable" android:resource="@xml/searchable"/>
<!--suppress AndroidDomInspection -->
<meta-data android:name="android.app.shortcuts" android:resource="@xml/shortcuts"/>
</activity>
@ -51,6 +61,21 @@
android:scheme="tachiyomi" />
</intent-filter>
</activity>
<activity
android:name=".ui.setting.ShikomoriLoginActivity"
android:label="Shikomori">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="shikimori-auth"
android:scheme="tachiyomi" />
</intent-filter>
</activity>
<activity
android:name=".extension.util.ExtensionInstallActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar"/>

View File

@ -57,13 +57,17 @@ open class App : Application() {
}
protected open fun setupJobManager() {
JobManager.create(this).addJobCreator { tag ->
when (tag) {
LibraryUpdateJob.TAG -> LibraryUpdateJob()
UpdaterJob.TAG -> UpdaterJob()
BackupCreatorJob.TAG -> BackupCreatorJob()
else -> null
try {
JobManager.create(this).addJobCreator { tag ->
when (tag) {
LibraryUpdateJob.TAG -> LibraryUpdateJob()
UpdaterJob.TAG -> UpdaterJob()
BackupCreatorJob.TAG -> BackupCreatorJob()
else -> null
}
}
} catch (e: Exception) {
Timber.w("Can't initialize job manager")
}
}

View File

@ -1,10 +1,12 @@
package eu.kanade.tachiyomi.data.database
import android.arch.persistence.db.SupportSQLiteOpenHelper
import android.content.Context
import com.pushtorefresh.storio.sqlite.impl.DefaultStorIOSQLite
import eu.kanade.tachiyomi.data.database.mappers.*
import eu.kanade.tachiyomi.data.database.models.*
import eu.kanade.tachiyomi.data.database.queries.*
import io.requery.android.database.sqlite.RequerySQLiteOpenHelperFactory
/**
* This class provides operations to manage the database through its interfaces.
@ -12,8 +14,13 @@ import eu.kanade.tachiyomi.data.database.queries.*
open class DatabaseHelper(context: Context)
: MangaQueries, ChapterQueries, TrackQueries, CategoryQueries, MangaCategoryQueries, HistoryQueries {
private val configuration = SupportSQLiteOpenHelper.Configuration.builder(context)
.name(DbOpenCallback.DATABASE_NAME)
.callback(DbOpenCallback())
.build()
override val db = DefaultStorIOSQLite.builder()
.sqliteOpenHelper(DbOpenHelper(context))
.sqliteOpenHelper(RequerySQLiteOpenHelperFactory().create(configuration))
.addTypeMapping(Manga::class.java, MangaTypeMapping())
.addTypeMapping(Chapter::class.java, ChapterTypeMapping())
.addTypeMapping(Track::class.java, TrackTypeMapping())

View File

@ -1,12 +1,13 @@
package eu.kanade.tachiyomi.data.database
import android.arch.persistence.db.SupportSQLiteDatabase
import android.arch.persistence.db.SupportSQLiteOpenHelper
import android.content.Context
import android.database.sqlite.SQLiteDatabase
import android.database.sqlite.SQLiteOpenHelper
import eu.kanade.tachiyomi.data.database.tables.*
class DbOpenHelper(context: Context)
: SQLiteOpenHelper(context, DATABASE_NAME, null, DATABASE_VERSION) {
class DbOpenCallback : SupportSQLiteOpenHelper.Callback(DATABASE_VERSION) {
companion object {
/**
@ -17,10 +18,10 @@ class DbOpenHelper(context: Context)
/**
* Version of the database.
*/
const val DATABASE_VERSION = 7
const val DATABASE_VERSION = 8
}
override fun onCreate(db: SQLiteDatabase) = with(db) {
override fun onCreate(db: SupportSQLiteDatabase) = with(db) {
execSQL(MangaTable.createTableQuery)
execSQL(ChapterTable.createTableQuery)
execSQL(TrackTable.createTableQuery)
@ -30,12 +31,13 @@ class DbOpenHelper(context: Context)
// DB indexes
execSQL(MangaTable.createUrlIndexQuery)
execSQL(MangaTable.createFavoriteIndexQuery)
execSQL(MangaTable.createLibraryIndexQuery)
execSQL(ChapterTable.createMangaIdIndexQuery)
execSQL(ChapterTable.createUnreadChaptersIndexQuery)
execSQL(HistoryTable.createChapterIdIndexQuery)
}
override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) {
override fun onUpgrade(db: SupportSQLiteDatabase, oldVersion: Int, newVersion: Int) {
if (oldVersion < 2) {
db.execSQL(ChapterTable.sourceOrderUpdateQuery)
@ -60,9 +62,14 @@ class DbOpenHelper(context: Context)
if (oldVersion < 7) {
db.execSQL(TrackTable.addLibraryId)
}
if (oldVersion < 8) {
db.execSQL("DROP INDEX IF EXISTS mangas_favorite_index")
db.execSQL(MangaTable.createLibraryIndexQuery)
db.execSQL(ChapterTable.createUnreadChaptersIndexQuery)
}
}
override fun onConfigure(db: SQLiteDatabase) {
override fun onConfigure(db: SupportSQLiteDatabase) {
db.setForeignKeyConstraintsEnabled(true)
}

View File

@ -49,6 +49,10 @@ object ChapterTable {
val createMangaIdIndexQuery: String
get() = "CREATE INDEX ${TABLE}_${COL_MANGA_ID}_index ON $TABLE($COL_MANGA_ID)"
val createUnreadChaptersIndexQuery: String
get() = "CREATE INDEX ${TABLE}_unread_by_manga_index ON $TABLE($COL_MANGA_ID, $COL_READ) " +
"WHERE $COL_READ = 0"
val sourceOrderUpdateQuery: String
get() = "ALTER TABLE $TABLE ADD COLUMN $COL_SOURCE_ORDER INTEGER DEFAULT 0"

View File

@ -60,6 +60,7 @@ object MangaTable {
val createUrlIndexQuery: String
get() = "CREATE INDEX ${TABLE}_${COL_URL}_index ON $TABLE($COL_URL)"
val createFavoriteIndexQuery: String
get() = "CREATE INDEX ${TABLE}_${COL_FAVORITE}_index ON $TABLE($COL_FAVORITE)"
val createLibraryIndexQuery: String
get() = "CREATE INDEX library_${COL_FAVORITE}_index ON $TABLE($COL_FAVORITE) " +
"WHERE $COL_FAVORITE = 1"
}

View File

@ -37,7 +37,7 @@ internal class DownloadNotifier(private val context: Context) {
*/
var initialQueueSize = 0
set(value) {
if (value != 0){
if (value != 0) {
isSingleChapter = (value == 1)
}
field = value
@ -99,6 +99,10 @@ internal class DownloadNotifier(private val context: Context) {
// Open download manager when clicked
setContentIntent(NotificationHandler.openDownloadManagerPendingActivity(context))
isDownloading = true
// Pause action
addAction(R.drawable.ic_av_pause_grey_24dp_img,
context.getString(R.string.action_pause),
NotificationReceiver.pauseDownloadsPendingBroadcast(context))
}
val title = download.manga.title.chop(15)

View File

@ -38,6 +38,11 @@ class NotificationReceiver : BroadcastReceiver() {
ACTION_DISMISS_NOTIFICATION -> dismissNotification(context, intent.getIntExtra(EXTRA_NOTIFICATION_ID, -1))
// Resume the download service
ACTION_RESUME_DOWNLOADS -> DownloadService.start(context)
// Pause the download service
ACTION_PAUSE_DOWNLOADS -> {
DownloadService.stop(context)
downloadManager.pauseDownloads()
}
// Clear the download queue
ACTION_CLEAR_DOWNLOADS -> downloadManager.clearQueue(true)
// Show message notification created
@ -159,6 +164,9 @@ class NotificationReceiver : BroadcastReceiver() {
// Called to resume downloads.
private const val ACTION_RESUME_DOWNLOADS = "$ID.$NAME.ACTION_RESUME_DOWNLOADS"
// Called to pause downloads.
private const val ACTION_PAUSE_DOWNLOADS = "$ID.$NAME.ACTION_PAUSE_DOWNLOADS"
// Called to clear downloads.
private const val ACTION_CLEAR_DOWNLOADS = "$ID.$NAME.ACTION_CLEAR_DOWNLOADS"
@ -190,6 +198,19 @@ class NotificationReceiver : BroadcastReceiver() {
return PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT)
}
/**
* Returns [PendingIntent] that pauses the download queue
*
* @param context context of application
* @return [PendingIntent]
*/
internal fun pauseDownloadsPendingBroadcast(context: Context): PendingIntent {
val intent = Intent(context, NotificationReceiver::class.java).apply {
action = ACTION_PAUSE_DOWNLOADS
}
return PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT)
}
/**
* Returns a [PendingIntent] that clears the download queue
*
@ -203,7 +224,7 @@ class NotificationReceiver : BroadcastReceiver() {
return PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT)
}
internal fun shortcutCreatedBroadcast(context: Context) : PendingIntent {
internal fun shortcutCreatedBroadcast(context: Context): PendingIntent {
val intent = Intent(context, NotificationReceiver::class.java).apply {
action = ACTION_SHORTCUT_CREATED
}

View File

@ -15,6 +15,8 @@ object PreferenceKeys {
const val showPageNumber = "pref_show_page_number_key"
const val trueColor = "pref_true_color_key"
const val fullscreen = "fullscreen"
const val keepScreenOn = "pref_keep_screen_on_key"
@ -41,6 +43,8 @@ object PreferenceKeys {
const val readWithTapping = "reader_tap"
const val readWithLongTap = "reader_long_tap"
const val readWithVolumeKeys = "reader_volume_keys"
const val readWithVolumeKeysInverted = "reader_volume_keys_inverted"
@ -103,6 +107,8 @@ object PreferenceKeys {
const val defaultCategory = "default_category"
const val skipRead = "skip_read"
const val downloadBadge = "display_download_badge"
@Deprecated("Use the preferences of the source")

View File

@ -43,6 +43,8 @@ class PreferencesHelper(val context: Context) {
fun showPageNumber() = rxPrefs.getBoolean(Keys.showPageNumber, true)
fun trueColor() = rxPrefs.getBoolean(Keys.trueColor, false)
fun fullscreen() = rxPrefs.getBoolean(Keys.fullscreen, true)
fun keepScreenOn() = rxPrefs.getBoolean(Keys.keepScreenOn, true)
@ -69,6 +71,8 @@ class PreferencesHelper(val context: Context) {
fun readWithTapping() = rxPrefs.getBoolean(Keys.readWithTapping, true)
fun readWithLongTap() = rxPrefs.getBoolean(Keys.readWithLongTap, true)
fun readWithVolumeKeys() = rxPrefs.getBoolean(Keys.readWithVolumeKeys, false)
fun readWithVolumeKeysInverted() = rxPrefs.getBoolean(Keys.readWithVolumeKeysInverted, false)
@ -163,6 +167,8 @@ class PreferencesHelper(val context: Context) {
fun defaultCategory() = prefs.getInt(Keys.defaultCategory, -1)
fun skipRead() = prefs.getBoolean(Keys.skipRead, false)
fun migrateFlags() = rxPrefs.getInteger("migrate_flags", Int.MAX_VALUE)
fun trustedSignatures() = rxPrefs.getStringSet("trusted_signatures", emptySet())

View File

@ -4,6 +4,7 @@ import android.content.Context
import eu.kanade.tachiyomi.data.track.anilist.Anilist
import eu.kanade.tachiyomi.data.track.kitsu.Kitsu
import eu.kanade.tachiyomi.data.track.myanimelist.Myanimelist
import eu.kanade.tachiyomi.data.track.shikomori.Shikomori
class TrackManager(private val context: Context) {
@ -11,6 +12,7 @@ class TrackManager(private val context: Context) {
const val MYANIMELIST = 1
const val ANILIST = 2
const val KITSU = 3
const val SHIKOMORI = 4
}
val myAnimeList = Myanimelist(context, MYANIMELIST)
@ -19,7 +21,9 @@ class TrackManager(private val context: Context) {
val kitsu = Kitsu(context, KITSU)
val services = listOf(myAnimeList, aniList, kitsu)
val shikomori = Shikomori(context, SHIKOMORI)
val services = listOf(myAnimeList, aniList, kitsu, shikomori)
fun getService(id: Int) = services.find { it.id == id }

View File

@ -60,12 +60,11 @@ abstract class TrackService(val id: Int) {
get() = !getUsername().isEmpty() &&
!getPassword().isEmpty()
fun getUsername() = preferences.trackUsername(this)
fun getUsername() = preferences.trackUsername(this)!!
fun getPassword() = preferences.trackPassword(this)
fun getPassword() = preferences.trackPassword(this)!!
fun saveCredentials(username: String, password: String) {
preferences.setTrackCredentials(this, username, password)
}
}

View File

@ -12,6 +12,7 @@ import okhttp3.OkHttpClient
import okhttp3.Request
import okhttp3.RequestBody
import rx.Observable
import java.util.Calendar
class AnilistApi(val client: OkHttpClient, interceptor: AnilistInterceptor) {
@ -90,7 +91,7 @@ class AnilistApi(val client: OkHttpClient, interceptor: AnilistInterceptor) {
fun search(search: String): Observable<List<TrackSearch>> {
val query = """
query Search(${'$'}query: String) {
Page (perPage: 25) {
Page (perPage: 50) {
media(search: ${'$'}query, type: MANGA, format_not_in: [NOVEL]) {
id
title {
@ -102,6 +103,7 @@ class AnilistApi(val client: OkHttpClient, interceptor: AnilistInterceptor) {
type
status
chapters
description
startDate {
year
month
@ -160,6 +162,7 @@ class AnilistApi(val client: OkHttpClient, interceptor: AnilistInterceptor) {
type
status
chapters
description
startDate {
year
month
@ -244,10 +247,18 @@ class AnilistApi(val client: OkHttpClient, interceptor: AnilistInterceptor) {
}
fun jsonToALManga(struct: JsonObject): ALManga{
val date = try {
val date = Calendar.getInstance()
date.set(struct["startDate"]["year"].nullInt ?: 0, (struct["startDate"]["month"].nullInt ?: 0) - 1,
struct["startDate"]["day"].nullInt ?: 0)
date.timeInMillis
} catch (_: Exception) {
0L
}
return ALManga(struct["id"].asInt, struct["title"]["romaji"].asString, struct["coverImage"]["large"].asString,
null, struct["type"].asString, struct["status"].asString,
struct["startDate"]["year"].nullString.orEmpty() + struct["startDate"]["month"].nullString.orEmpty()
+ struct["startDate"]["day"].nullString.orEmpty(), struct["chapters"].nullInt ?: 0)
struct["description"].nullString.orEmpty(), struct["type"].asString, struct["status"].asString,
date, struct["chapters"].nullInt ?: 0)
}
fun jsonToALUserManga(struct: JsonObject): ALUserManga{

View File

@ -1,6 +1,5 @@
package eu.kanade.tachiyomi.data.track.anilist
import eu.kanade.tachiyomi.BuildConfig
import eu.kanade.tachiyomi.data.database.models.Track
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.data.preference.getOrDefault
@ -17,7 +16,7 @@ data class ALManga(
val description: String?,
val type: String,
val publishing_status: String,
val start_date_fuzzy: String,
val start_date_fuzzy: Long,
val total_chapters: Int) {
fun toTrack() = TrackSearch.create(TrackManager.ANILIST).apply {
@ -29,14 +28,12 @@ data class ALManga(
tracking_url = AnilistApi.mangaUrl(media_id)
publishing_status = this@ALManga.publishing_status
publishing_type = type
if (!start_date_fuzzy.isNullOrBlank()) {
if (start_date_fuzzy != 0L) {
start_date = try {
val inputDf = SimpleDateFormat("yyyyMMdd", Locale.US)
val outputDf = SimpleDateFormat("yyyy-MM-dd", Locale.US)
val date = inputDf.parse(BuildConfig.BUILD_TIME)
outputDf.format(date)
outputDf.format(start_date_fuzzy)
} catch (e: Exception) {
start_date_fuzzy.orEmpty()
""
}
}
}
@ -64,6 +61,7 @@ data class ALUserManga(
"PAUSED" -> Anilist.ON_HOLD
"DROPPED" -> Anilist.DROPPED
"PLANNING" -> Anilist.PLANNING
"REPEATING" -> Anilist.REPEATING
else -> throw NotImplementedError("Unknown status")
}
}

View File

@ -14,7 +14,7 @@ class KitsuSearchManga(obj: JsonObject) {
private val canonicalTitle by obj.byString
private val chapterCount = obj.get("chapterCount").nullInt
val subType = obj.get("subtype").nullString
val original by obj["posterImage"].byString
val original = obj.get("posterImage").nullObj?.get("original")?.asString
private val synopsis by obj.byString
private var startDate = obj.get("startDate").nullString?.let {
val outputDf = SimpleDateFormat("yyyy-MM-dd", Locale.US)
@ -28,7 +28,7 @@ class KitsuSearchManga(obj: JsonObject) {
media_id = this@KitsuSearchManga.id
title = canonicalTitle
total_chapters = chapterCount ?: 0
cover_url = original
cover_url = original ?: ""
summary = synopsis
tracking_url = KitsuApi.mangaUrl(media_id)
if (endDate == null) {

View File

@ -4,8 +4,10 @@ import android.content.Context
import android.graphics.Color
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.database.models.Track
import eu.kanade.tachiyomi.data.track.model.TrackSearch
import eu.kanade.tachiyomi.data.preference.getOrDefault
import eu.kanade.tachiyomi.data.track.TrackService
import eu.kanade.tachiyomi.data.track.model.TrackSearch
import okhttp3.HttpUrl
import rx.Completable
import rx.Observable
@ -21,9 +23,13 @@ class Myanimelist(private val context: Context, id: Int) : TrackService(id) {
const val DEFAULT_STATUS = READING
const val DEFAULT_SCORE = 0
const val BASE_URL = "https://myanimelist.net"
const val USER_SESSION_COOKIE = "MALSESSIONID"
const val LOGGED_IN_COOKIE = "is_logged_in"
}
private val api by lazy { MyanimelistApi(client, getUsername(), getPassword()) }
private val api by lazy { MyanimelistApi(client) }
override val name: String
get() = "MyAnimeList"
@ -56,7 +62,7 @@ class Myanimelist(private val context: Context, id: Int) : TrackService(id) {
}
override fun add(track: Track): Observable<Track> {
return api.addLibManga(track)
return api.addLibManga(track, getCSRF())
}
override fun update(track: Track): Observable<Track> {
@ -64,11 +70,11 @@ class Myanimelist(private val context: Context, id: Int) : TrackService(id) {
track.status = COMPLETED
}
return api.updateLibManga(track)
return api.updateLibManga(track, getCSRF())
}
override fun bind(track: Track): Observable<Track> {
return api.findLibManga(track, getUsername())
return api.findLibManga(track, getCSRF())
.flatMap { remoteTrack ->
if (remoteTrack != null) {
track.copyPersonalFrom(remoteTrack)
@ -83,11 +89,11 @@ class Myanimelist(private val context: Context, id: Int) : TrackService(id) {
}
override fun search(query: String): Observable<List<TrackSearch>> {
return api.search(query, getUsername())
return api.search(query)
}
override fun refresh(track: Track): Observable<Track> {
return api.getLibManga(track, getUsername())
return api.getLibManga(track, getCSRF())
.map { remoteTrack ->
track.copyPersonalFrom(remoteTrack)
track.total_chapters = remoteTrack.total_chapters
@ -96,10 +102,40 @@ class Myanimelist(private val context: Context, id: Int) : TrackService(id) {
}
override fun login(username: String, password: String): Completable {
logout()
return api.login(username, password)
.doOnNext { csrf -> saveCSRF(csrf) }
.doOnNext { saveCredentials(username, password) }
.doOnError { logout() }
.toCompletable()
}
override fun logout() {
super.logout()
preferences.trackToken(this).delete()
networkService.cookieManager.remove(HttpUrl.parse(BASE_URL)!!)
}
override val isLogged: Boolean
get() = !getUsername().isEmpty() &&
!getPassword().isEmpty() &&
checkCookies() &&
!getCSRF().isEmpty()
private fun getCSRF(): String = preferences.trackToken(this).getOrDefault()
private fun saveCSRF(csrf: String) = preferences.trackToken(this).set(csrf)
private fun checkCookies(): Boolean {
var ckCount = 0
val url = HttpUrl.parse(BASE_URL)!!
for (ck in networkService.cookieManager.get(url)) {
if (ck.name() == USER_SESSION_COOKIE || ck.name() == LOGGED_IN_COOKIE)
ckCount++
}
return ckCount == 2
}
}

View File

@ -1,7 +1,6 @@
package eu.kanade.tachiyomi.data.track.myanimelist
import android.net.Uri
import android.util.Xml
import eu.kanade.tachiyomi.data.database.models.Track
import eu.kanade.tachiyomi.data.track.TrackManager
import eu.kanade.tachiyomi.data.track.model.TrackSearch
@ -12,191 +11,266 @@ import eu.kanade.tachiyomi.network.asObservableSuccess
import eu.kanade.tachiyomi.util.selectInt
import eu.kanade.tachiyomi.util.selectText
import okhttp3.*
import org.json.JSONObject
import org.jsoup.Jsoup
import org.jsoup.nodes.Document
import org.jsoup.nodes.Element
import org.jsoup.parser.Parser
import org.xmlpull.v1.XmlSerializer
import rx.Observable
import java.io.StringWriter
import java.io.BufferedReader
import java.io.InputStreamReader
import java.util.zip.GZIPInputStream
class MyanimelistApi(private val client: OkHttpClient, username: String, password: String) {
private var headers = createHeaders(username, password)
class MyanimelistApi(private val client: OkHttpClient) {
fun addLibManga(track: Track): Observable<Track> {
fun addLibManga(track: Track, csrf: String): Observable<Track> {
return Observable.defer {
client.newCall(POST(getAddUrl(track), headers, getMangaPostPayload(track)))
client.newCall(POST(url = getAddUrl(), body = getMangaPostPayload(track, csrf)))
.asObservableSuccess()
.map { track }
}
}
fun updateLibManga(track: Track): Observable<Track> {
fun updateLibManga(track: Track, csrf: String): Observable<Track> {
return Observable.defer {
client.newCall(POST(getUpdateUrl(track), headers, getMangaPostPayload(track)))
client.newCall(POST(url = getUpdateUrl(), body = getMangaPostPayload(track, csrf)))
.asObservableSuccess()
.map { track }
}
}
fun search(query: String, username: String): Observable<List<TrackSearch>> {
return if (query.startsWith(PREFIX_MY)) {
val realQuery = query.substring(PREFIX_MY.length).toLowerCase().trim()
getList(username)
.flatMap { Observable.from(it) }
.filter { realQuery in it.title.toLowerCase() }
.toList()
} else {
client.newCall(GET(getSearchUrl(query), headers))
.asObservable()
.map { Jsoup.parse(Parser.unescapeEntities(it.body()!!.string(), false), "", Parser.xmlParser()) }
.flatMap { Observable.from(it.select("entry")) }
.filter { it.select("type").text() != "Novel" }
.map {
TrackSearch.create(TrackManager.MYANIMELIST).apply {
title = it.selectText("title")!!
media_id = it.selectInt("id")
total_chapters = it.selectInt("chapters")
summary = it.selectText("synopsis")!!
cover_url = it.selectText("image")!!
tracking_url = MyanimelistApi.mangaUrl(media_id)
publishing_status = it.selectText("status")!!
publishing_type = it.selectText("type")!!
start_date = it.selectText("start_date")!!
}
}
.toList()
}
}
fun getList(username: String): Observable<List<TrackSearch>> {
return client
.newCall(GET(getListUrl(username), headers))
fun search(query: String): Observable<List<TrackSearch>> {
return client.newCall(GET(getSearchUrl(query)))
.asObservable()
.map { Jsoup.parse(Parser.unescapeEntities(it.body()!!.string(), false), "", Parser.xmlParser()) }
.flatMap { Observable.from(it.select("manga")) }
.map {
.flatMap { response ->
Observable.from(Jsoup.parse(response.consumeBody())
.select("div.js-categories-seasonal.js-block-list.list")
.select("table").select("tbody")
.select("tr").drop(1))
}
.filter { row ->
row.select(TD)[2].text() != "Novel"
}
.map { row ->
TrackSearch.create(TrackManager.MYANIMELIST).apply {
title = it.selectText("series_title")!!
media_id = it.selectInt("series_mangadb_id")
last_chapter_read = it.selectInt("my_read_chapters")
status = it.selectInt("my_status")
score = it.selectInt("my_score").toFloat()
total_chapters = it.selectInt("series_chapters")
cover_url = it.selectText("series_image")!!
tracking_url = MyanimelistApi.mangaUrl(media_id)
title = row.searchTitle()
media_id = row.searchMediaId()
total_chapters = row.searchTotalChapters()
summary = row.searchSummary()
cover_url = row.searchCoverUrl()
tracking_url = mangaUrl(media_id)
publishing_status = row.searchPublishingStatus()
publishing_type = row.searchPublishingType()
start_date = row.searchStartDate()
}
}
.toList()
}
fun findLibManga(track: Track, username: String): Observable<Track?> {
return getList(username)
private fun getList(csrf: String): Observable<List<TrackSearch>> {
return getListUrl(csrf)
.flatMap { url ->
getListXml(url)
}
.flatMap { doc ->
Observable.from(doc.select("manga"))
}
.map { it ->
TrackSearch.create(TrackManager.MYANIMELIST).apply {
title = it.selectText("manga_title")!!
media_id = it.selectInt("manga_mangadb_id")
last_chapter_read = it.selectInt("my_read_chapters")
status = getStatus(it.selectText("my_status")!!)
score = it.selectInt("my_score").toFloat()
total_chapters = it.selectInt("manga_chapters")
tracking_url = mangaUrl(media_id)
}
}
.toList()
}
private fun getListXml(url: String): Observable<Document> {
return client.newCall(GET(url))
.asObservable()
.map { response ->
Jsoup.parse(response.consumeXmlBody(), "", Parser.xmlParser())
}
}
fun findLibManga(track: Track, csrf: String): Observable<Track?> {
return getList(csrf)
.map { list -> list.find { it.media_id == track.media_id } }
}
fun getLibManga(track: Track, username: String): Observable<Track> {
return findLibManga(track, username)
fun getLibManga(track: Track, csrf: String): Observable<Track> {
return findLibManga(track, csrf)
.map { it ?: throw Exception("Could not find manga") }
}
fun login(username: String, password: String): Observable<Response> {
headers = createHeaders(username, password)
return client.newCall(GET(getLoginUrl(), headers))
.asObservable()
.doOnNext { response ->
response.close()
if (response.code() != 200) throw Exception("Login error")
fun login(username: String, password: String): Observable<String> {
return getSessionInfo()
.flatMap { csrf ->
login(username, password, csrf)
}
}
private fun getMangaPostPayload(track: Track): RequestBody {
val data = xml {
element(ENTRY_TAG) {
if (track.last_chapter_read != 0) {
text(CHAPTER_TAG, track.last_chapter_read.toString())
private fun getSessionInfo(): Observable<String> {
return client.newCall(GET(getLoginUrl()))
.asObservable()
.map { response ->
Jsoup.parse(response.consumeBody())
.select("meta[name=csrf_token]")
.attr("content")
}
text(STATUS_TAG, track.status.toString())
text(SCORE_TAG, track.score.toString())
}
private fun login(username: String, password: String, csrf: String): Observable<String> {
return client.newCall(POST(url = getLoginUrl(), body = getLoginPostBody(username, password, csrf)))
.asObservable()
.map { response ->
response.use {
if (response.priorResponse()?.code() != 302) throw Exception("Authentication error")
}
csrf
}
}
private fun getLoginPostBody(username: String, password: String, csrf: String): RequestBody {
return FormBody.Builder()
.add("user_name", username)
.add("password", password)
.add("cookie", "1")
.add("sublogin", "Login")
.add("submit", "1")
.add(CSRF, csrf)
.build()
}
private fun getExportPostBody(csrf: String): RequestBody {
return FormBody.Builder()
.add("type", "2")
.add("subexport", "Export My List")
.add(CSRF, csrf)
.build()
}
private fun getMangaPostPayload(track: Track, csrf: String): RequestBody {
val body = JSONObject()
.put("manga_id", track.media_id)
.put("status", track.status)
.put("score", track.score)
.put("num_read_chapters", track.last_chapter_read)
.put(CSRF, csrf)
return RequestBody.create(MediaType.parse("application/json; charset=utf-8"), body.toString())
}
private fun getLoginUrl() = Uri.parse(baseUrl).buildUpon()
.appendPath("login.php")
.toString()
private fun getSearchUrl(query: String): String {
val col = "c[]"
return Uri.parse(baseUrl).buildUpon()
.appendPath("manga.php")
.appendQueryParameter("q", query)
.appendQueryParameter(col, "a")
.appendQueryParameter(col, "b")
.appendQueryParameter(col, "c")
.appendQueryParameter(col, "d")
.appendQueryParameter(col, "e")
.appendQueryParameter(col, "g")
.toString()
}
private fun getExportListUrl() = Uri.parse(baseUrl).buildUpon()
.appendPath("panel.php")
.appendQueryParameter("go", "export")
.toString()
private fun getListUrl(csrf: String): Observable<String> {
return client.newCall(POST(url = getExportListUrl(), body = getExportPostBody(csrf)))
.asObservable()
.map {response ->
baseUrl + Jsoup.parse(response.consumeBody())
.select("div.goodresult")
.select("a")
.attr("href")
}
}
private fun getUpdateUrl() = Uri.parse(baseModifyListUrl).buildUpon()
.appendPath("edit.json")
.toString()
private fun getAddUrl() = Uri.parse(baseModifyListUrl).buildUpon()
.appendPath( "add.json")
.toString()
private fun Response.consumeBody(): String? {
use {
if (it.code() != 200) throw Exception("Login error")
return it.body()?.string()
}
}
private fun Response.consumeXmlBody(): String? {
use { res ->
if (res.code() != 200) throw Exception("Export list error")
BufferedReader(InputStreamReader(GZIPInputStream(res.body()?.source()?.inputStream()))).use { reader ->
val sb = StringBuilder()
reader.forEachLine { line ->
sb.append(line)
}
return sb.toString()
}
}
return FormBody.Builder()
.add("data", data)
.build()
}
private inline fun xml(block: XmlSerializer.() -> Unit): String {
val x = Xml.newSerializer()
val writer = StringWriter()
with(x) {
setOutput(writer)
startDocument("UTF-8", false)
block()
endDocument()
}
return writer.toString()
}
private inline fun XmlSerializer.element(tag: String, block: XmlSerializer.() -> Unit) {
startTag("", tag)
block()
endTag("", tag)
}
private fun XmlSerializer.text(tag: String, body: String) {
startTag("", tag)
text(body)
endTag("", tag)
}
fun getLoginUrl() = Uri.parse(baseUrl).buildUpon()
.appendEncodedPath("api/account/verify_credentials.xml")
.toString()
fun getSearchUrl(query: String) = Uri.parse(baseUrl).buildUpon()
.appendEncodedPath("api/manga/search.xml")
.appendQueryParameter("q", query)
.toString()
fun getListUrl(username: String) = Uri.parse(baseUrl).buildUpon()
.appendPath("malappinfo.php")
.appendQueryParameter("u", username)
.appendQueryParameter("status", "all")
.appendQueryParameter("type", "manga")
.toString()
fun getUpdateUrl(track: Track) = Uri.parse(baseUrl).buildUpon()
.appendEncodedPath("api/mangalist/update")
.appendPath("${track.media_id}.xml")
.toString()
fun getAddUrl(track: Track) = Uri.parse(baseUrl).buildUpon()
.appendEncodedPath("api/mangalist/add")
.appendPath("${track.media_id}.xml")
.toString()
fun createHeaders(username: String, password: String): Headers {
return Headers.Builder()
.add("Authorization", Credentials.basic(username, password))
.add("User-Agent", "api-indiv-9F93C52A963974CF674325391990191C")
.build()
}
companion object {
const val baseUrl = "https://myanimelist.net"
const val baseMangaUrl = baseUrl + "/manga/"
private const val baseMangaUrl = "$baseUrl/manga/"
private const val baseModifyListUrl = "$baseUrl/ownlist/manga"
fun mangaUrl(remoteId: Int): String {
return baseMangaUrl + remoteId
}
fun mangaUrl(remoteId: Int) = baseMangaUrl + remoteId
private val ENTRY_TAG = "entry"
private val CHAPTER_TAG = "chapter"
private val SCORE_TAG = "score"
private val STATUS_TAG = "status"
fun Element.searchTitle() = select("strong").text()!!
const val PREFIX_MY = "my:"
fun Element.searchTotalChapters() = if (select(TD)[4].text() == "-") 0 else select(TD)[4].text().toInt()
fun Element.searchCoverUrl() = select("img")
.attr("data-src")
.split("\\?")[0]
.replace("/r/50x70/", "/")
fun Element.searchMediaId() = select("div.picSurround")
.select("a").attr("id")
.replace("sarea", "")
.toInt()
fun Element.searchSummary() = select("div.pt4")
.first()
.ownText()!!
fun Element.searchPublishingStatus() = if (select(TD).last().text() == "-") PUBLISHING else FINISHED
fun Element.searchPublishingType() = select(TD)[2].text()!!
fun Element.searchStartDate() = select(TD)[6].text()!!
fun getStatus(status: String) = when (status) {
"Reading" -> 1
"Completed" -> 2
"On-Hold" -> 3
"Dropped" -> 4
"Plan to Read" -> 6
else -> 1
}
const val CSRF = "csrf_token"
const val TD = "td"
private const val FINISHED = "Finished"
private const val PUBLISHING = "Publishing"
}
}

View File

@ -0,0 +1,13 @@
package eu.kanade.tachiyomi.data.track.shikomori
data class OAuth(
val access_token: String,
val token_type: String,
val created_at: Long,
val expires_in: Long,
val refresh_token: String?) {
// Access token lives 1 day
fun isExpired() = (System.currentTimeMillis() / 1000) > (created_at + expires_in - 3600)
}

View File

@ -0,0 +1,138 @@
package eu.kanade.tachiyomi.data.track.shikomori
import android.content.Context
import android.graphics.Color
import com.google.gson.Gson
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.database.models.Track
import eu.kanade.tachiyomi.data.track.TrackService
import eu.kanade.tachiyomi.data.track.model.TrackSearch
import rx.Completable
import rx.Observable
import uy.kohesive.injekt.injectLazy
class Shikomori(private val context: Context, id: Int) : TrackService(id) {
override fun getScoreList(): List<String> {
return IntRange(0, 10).map(Int::toString)
}
override fun displayScore(track: Track): String {
return track.score.toInt().toString()
}
override fun add(track: Track): Observable<Track> {
return api.addLibManga(track, getUsername())
}
override fun update(track: Track): Observable<Track> {
if (track.total_chapters != 0 && track.last_chapter_read == track.total_chapters) {
track.status = COMPLETED
}
return api.updateLibManga(track, getUsername())
}
override fun bind(track: Track): Observable<Track> {
return api.findLibManga(track, getUsername())
.flatMap { remoteTrack ->
if (remoteTrack != null) {
track.copyPersonalFrom(remoteTrack)
track.library_id = remoteTrack.library_id
update(track)
} else {
// Set default fields if it's not found in the list
track.score = DEFAULT_SCORE.toFloat()
track.status = DEFAULT_STATUS
add(track)
}
}
}
override fun search(query: String): Observable<List<TrackSearch>> {
return api.search(query)
}
override fun refresh(track: Track): Observable<Track> {
return api.findLibManga(track, getUsername())
.map { remoteTrack ->
if (remoteTrack != null) {
track.copyPersonalFrom(remoteTrack)
track.total_chapters = remoteTrack.total_chapters
}
track
}
}
companion object {
const val READING = 1
const val COMPLETED = 2
const val ON_HOLD = 3
const val DROPPED = 4
const val PLANNING = 5
const val REPEATING = 6
const val DEFAULT_STATUS = READING
const val DEFAULT_SCORE = 0
}
override val name = "Shikomori"
private val gson: Gson by injectLazy()
private val interceptor by lazy { ShikomoriInterceptor(this, gson) }
private val api by lazy { ShikomoriApi(client, interceptor) }
override fun getLogo() = R.drawable.shikomori
override fun getLogoColor() = Color.rgb(40, 40, 40)
override fun getStatusList(): List<Int> {
return listOf(READING, COMPLETED, ON_HOLD, DROPPED, PLANNING, REPEATING)
}
override fun getStatus(status: Int): String = with(context) {
when (status) {
READING -> getString(R.string.reading)
COMPLETED -> getString(R.string.completed)
ON_HOLD -> getString(R.string.on_hold)
DROPPED -> getString(R.string.dropped)
PLANNING -> getString(R.string.plan_to_read)
REPEATING -> getString(R.string.repeating)
else -> ""
}
}
override fun login(username: String, password: String) = login(password)
fun login(code: String): Completable {
return api.accessToken(code).map { oauth: OAuth? ->
interceptor.newAuth(oauth)
if (oauth != null) {
val user = api.getCurrentUser()
saveCredentials(user.toString(), oauth.access_token)
}
}.doOnError {
logout()
}.toCompletable()
}
fun saveToken(oauth: OAuth?) {
val json = gson.toJson(oauth)
preferences.trackToken(this).set(json)
}
fun restoreToken(): OAuth? {
return try {
gson.fromJson(preferences.trackToken(this).get(), OAuth::class.java)
} catch (e: Exception) {
null
}
}
override fun logout() {
super.logout()
preferences.trackToken(this).set(null)
interceptor.newAuth(null)
}
}

View File

@ -0,0 +1,189 @@
package eu.kanade.tachiyomi.data.track.shikomori
import android.net.Uri
import com.github.salomonbrys.kotson.array
import com.github.salomonbrys.kotson.jsonObject
import com.github.salomonbrys.kotson.nullString
import com.github.salomonbrys.kotson.obj
import com.google.gson.Gson
import com.google.gson.JsonObject
import com.google.gson.JsonParser
import eu.kanade.tachiyomi.data.database.models.Track
import eu.kanade.tachiyomi.data.track.TrackManager
import eu.kanade.tachiyomi.data.track.model.TrackSearch
import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.network.POST
import eu.kanade.tachiyomi.network.asObservableSuccess
import okhttp3.*
import rx.Observable
import uy.kohesive.injekt.injectLazy
class ShikomoriApi(private val client: OkHttpClient, interceptor: ShikomoriInterceptor) {
private val gson: Gson by injectLazy()
private val parser = JsonParser()
private val jsonime = MediaType.parse("application/json; charset=utf-8")
private val authClient = client.newBuilder().addInterceptor(interceptor).build()
fun addLibManga(track: Track, user_id: String): Observable<Track> {
val payload = jsonObject(
"user_rate" to jsonObject(
"user_id" to user_id,
"target_id" to track.media_id,
"target_type" to "Manga",
"chapters" to track.last_chapter_read,
"score" to track.score.toInt(),
"status" to track.toShikomoriStatus()
)
)
val body = RequestBody.create(jsonime, payload.toString())
val request = Request.Builder()
.url("$apiUrl/v2/user_rates")
.post(body)
.build()
return authClient.newCall(request)
.asObservableSuccess()
.map {
track
}
}
fun updateLibManga(track: Track, user_id: String): Observable<Track> = addLibManga(track, user_id)
fun search(search: String): Observable<List<TrackSearch>> {
val url = Uri.parse("$apiUrl/mangas").buildUpon()
.appendQueryParameter("order", "popularity")
.appendQueryParameter("search", search)
.appendQueryParameter("limit", "20")
.build()
val request = Request.Builder()
.url(url.toString())
.get()
.build()
return authClient.newCall(request)
.asObservableSuccess()
.map { netResponse ->
val responseBody = netResponse.body()?.string().orEmpty()
if (responseBody.isEmpty()) {
throw Exception("Null Response")
}
val response = parser.parse(responseBody).array
response.map { jsonToSearch(it.obj) }
}
}
private fun jsonToSearch(obj: JsonObject): TrackSearch {
return TrackSearch.create(TrackManager.SHIKOMORI).apply {
media_id = obj["id"].asInt
title = obj["name"].asString
total_chapters = obj["chapters"].asInt
cover_url = baseUrl + obj["image"].obj["preview"].asString
summary = ""
tracking_url = baseUrl + obj["url"].asString
publishing_status = obj["status"].asString
publishing_type = obj["kind"].asString
start_date = obj.get("aired_on").nullString.orEmpty()
}
}
private fun jsonToTrack(obj: JsonObject): Track {
return Track.create(TrackManager.SHIKOMORI).apply {
media_id = obj["id"].asInt
title = ""
last_chapter_read = obj["chapters"].asInt
total_chapters = obj["chapters"].asInt
score = (obj["score"].asInt).toFloat()
status = toTrackStatus(obj["status"].asString)
}
}
fun findLibManga(track: Track, user_id: String): Observable<Track?> {
val url = Uri.parse("$apiUrl/v2/user_rates").buildUpon()
.appendQueryParameter("user_id", user_id)
.appendQueryParameter("target_id", track.media_id.toString())
.appendQueryParameter("target_type", "Manga")
.build()
val request = Request.Builder()
.url(url.toString())
.get()
.build()
return authClient.newCall(request)
.asObservableSuccess()
.map { netResponse ->
val responseBody = netResponse.body()?.string().orEmpty()
if (responseBody.isEmpty()) {
throw Exception("Null Response")
}
val response = parser.parse(responseBody).array
if (response.size() > 1) {
throw Exception("Too much mangas in response")
}
val entry = response.map {
jsonToTrack(it.obj)
}
entry.firstOrNull()
}
}
fun getCurrentUser(): Int {
val user = authClient.newCall(GET("$apiUrl/users/whoami")).execute().body()?.string()
return parser.parse(user).obj["id"].asInt
}
fun accessToken(code: String): Observable<OAuth> {
return client.newCall(accessTokenRequest(code)).asObservableSuccess().map { netResponse ->
val responseBody = netResponse.body()?.string().orEmpty()
if (responseBody.isEmpty()) {
throw Exception("Null Response")
}
gson.fromJson(responseBody, OAuth::class.java)
}
}
private fun accessTokenRequest(code: String) = POST(oauthUrl,
body = FormBody.Builder()
.add("grant_type", "authorization_code")
.add("client_id", clientId)
.add("client_secret", clientSecret)
.add("code", code)
.add("redirect_uri", redirectUrl)
.build()
)
companion object {
private const val clientId = "1aaf4cf232372708e98b5abc813d795b539c5a916dbbfe9ac61bf02a360832cc"
private const val clientSecret = "229942c742dd4cde803125d17d64501d91c0b12e14cb1e5120184d77d67024c0"
private const val baseUrl = "https://shikimori.org"
private const val apiUrl = "https://shikimori.org/api"
private const val oauthUrl = "https://shikimori.org/oauth/token"
private const val loginUrl = "https://shikimori.org/oauth/authorize"
private const val redirectUrl = "tachiyomi://shikimori-auth"
private const val baseMangaUrl = "$apiUrl/mangas"
fun mangaUrl(remoteId: Int): String {
return "$baseMangaUrl/$remoteId"
}
fun authUrl() =
Uri.parse(loginUrl).buildUpon()
.appendQueryParameter("client_id", clientId)
.appendQueryParameter("redirect_uri", redirectUrl)
.appendQueryParameter("response_type", "code")
.build()
fun refreshTokenRequest(token: String) = POST(oauthUrl,
body = FormBody.Builder()
.add("grant_type", "refresh_token")
.add("client_id", clientId)
.add("client_secret", clientSecret)
.add("refresh_token", token)
.build())
}
}

View File

@ -0,0 +1,43 @@
package eu.kanade.tachiyomi.data.track.shikomori
import com.google.gson.Gson
import okhttp3.Interceptor
import okhttp3.Response
class ShikomoriInterceptor(val shikomori: Shikomori, val gson: Gson) : Interceptor {
/**
* OAuth object used for authenticated requests.
*/
private var oauth: OAuth? = shikomori.restoreToken()
override fun intercept(chain: Interceptor.Chain): Response {
val originalRequest = chain.request()
val currAuth = oauth ?: throw Exception("Not authenticated with Shikomori")
val refreshToken = currAuth.refresh_token!!
// Refresh access token if expired.
if (currAuth.isExpired()) {
val response = chain.proceed(ShikomoriApi.refreshTokenRequest(refreshToken))
if (response.isSuccessful) {
newAuth(gson.fromJson(response.body()!!.string(), OAuth::class.java))
} else {
response.close()
}
}
// Add the authorization header to the original request.
val authRequest = originalRequest.newBuilder()
.addHeader("Authorization", "Bearer ${oauth!!.access_token}")
.header("User-Agent", "Tachiyomi")
.build()
return chain.proceed(authRequest)
}
fun newAuth(oauth: OAuth?) {
this.oauth = oauth
shikomori.saveToken(oauth)
}
}

View File

@ -0,0 +1,24 @@
package eu.kanade.tachiyomi.data.track.shikomori
import eu.kanade.tachiyomi.data.database.models.Track
fun Track.toShikomoriStatus() = when (status) {
Shikomori.READING -> "watching"
Shikomori.COMPLETED -> "completed"
Shikomori.ON_HOLD -> "on_hold"
Shikomori.DROPPED -> "dropped"
Shikomori.PLANNING -> "planned"
Shikomori.REPEATING -> "rewatching"
else -> throw NotImplementedError("Unknown status")
}
fun toTrackStatus(status: String) = when (status) {
"watching" -> Shikomori.READING
"completed" -> Shikomori.COMPLETED
"on_hold" -> Shikomori.ON_HOLD
"dropped" -> Shikomori.DROPPED
"planned" -> Shikomori.PLANNING
"rewatching" -> Shikomori.REPEATING
else -> throw Exception("Unknown status")
}

View File

@ -0,0 +1,70 @@
package eu.kanade.tachiyomi.network
import android.content.Context
import android.os.Build
import android.webkit.CookieManager
import android.webkit.CookieSyncManager
import okhttp3.Cookie
import okhttp3.CookieJar
import okhttp3.HttpUrl
class AndroidCookieJar(context: Context) : CookieJar {
private val manager = CookieManager.getInstance()
private val syncManager by lazy { CookieSyncManager.createInstance(context) }
init {
// Init sync manager when using anything below L
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
syncManager
}
}
override fun saveFromResponse(url: HttpUrl, cookies: MutableList<Cookie>) {
val urlString = url.toString()
for (cookie in cookies) {
manager.setCookie(urlString, cookie.toString())
}
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
syncManager.sync()
}
}
override fun loadForRequest(url: HttpUrl): List<Cookie> {
return get(url)
}
fun get(url: HttpUrl): List<Cookie> {
val cookies = manager.getCookie(url.toString())
return if (cookies != null && !cookies.isEmpty()) {
cookies.split(";").mapNotNull { Cookie.parse(url, it) }
} else {
emptyList()
}
}
fun remove(url: HttpUrl) {
val cookies = manager.getCookie(url.toString()) ?: return
val domain = ".${url.host()}"
cookies.split(";")
.map { it.substringBefore("=") }
.onEach { manager.setCookie(domain, "$it=;Max-Age=-1") }
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
syncManager.sync()
}
}
fun removeAll() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
manager.removeAllCookies {}
} else {
manager.removeAllCookie()
syncManager.sync()
}
}
}

View File

@ -1,76 +1,154 @@
package eu.kanade.tachiyomi.network
import com.squareup.duktape.Duktape
import okhttp3.CacheControl
import okhttp3.HttpUrl
import android.annotation.SuppressLint
import android.content.Context
import android.os.Build
import android.os.Handler
import android.os.Looper
import android.webkit.WebResourceResponse
import android.webkit.WebSettings
import android.webkit.WebView
import eu.kanade.tachiyomi.util.WebViewClientCompat
import okhttp3.Interceptor
import okhttp3.Request
import okhttp3.Response
import java.io.IOException
import java.util.concurrent.CountDownLatch
import java.util.concurrent.TimeUnit
class CloudflareInterceptor : Interceptor {
private val operationPattern = Regex("""setTimeout\(function\(\)\{\s+(var (?:\w,)+f.+?\r?\n[\s\S]+?a\.value =.+?)\r?\n""")
private val passPattern = Regex("""name="pass" value="(.+?)"""")
private val challengePattern = Regex("""name="jschl_vc" value="(\w+)"""")
class CloudflareInterceptor(private val context: Context) : Interceptor {
private val serverCheck = arrayOf("cloudflare-nginx", "cloudflare")
private val handler = Handler(Looper.getMainLooper())
/**
* When this is called, it initializes the WebView if it wasn't already. We use this to avoid
* blocking the main thread too much. If used too often we could consider moving it to the
* Application class.
*/
private val initWebView by lazy {
if (Build.VERSION.SDK_INT >= 17) {
WebSettings.getDefaultUserAgent(context)
} else {
null
}
}
@Synchronized
override fun intercept(chain: Interceptor.Chain): Response {
initWebView
val response = chain.proceed(chain.request())
// Check if Cloudflare anti-bot is on
if (response.code() == 503 && response.header("Server") in serverCheck) {
return chain.proceed(resolveChallenge(response))
try {
response.close()
val solutionRequest = resolveWithWebView(chain.request())
return chain.proceed(solutionRequest)
} catch (e: Exception) {
// Because OkHttp's enqueue only handles IOExceptions, wrap the exception so that
// we don't crash the entire app
throw IOException(e)
}
}
return response
}
private fun resolveChallenge(response: Response): Request {
Duktape.create().use { duktape ->
val originalRequest = response.request()
val url = originalRequest.url()
val domain = url.host()
val content = response.body()!!.string()
private fun isChallengeSolutionUrl(url: String): Boolean {
return "chk_jschl" in url
}
// CloudFlare requires waiting 4 seconds before resolving the challenge
Thread.sleep(4000)
@SuppressLint("SetJavaScriptEnabled")
private fun resolveWithWebView(request: Request): Request {
// We need to lock this thread until the WebView finds the challenge solution url, because
// OkHttp doesn't support asynchronous interceptors.
val latch = CountDownLatch(1)
val operation = operationPattern.find(content)?.groups?.get(1)?.value
val challenge = challengePattern.find(content)?.groups?.get(1)?.value
val pass = passPattern.find(content)?.groups?.get(1)?.value
var webView: WebView? = null
var solutionUrl: String? = null
var challengeFound = false
if (operation == null || challenge == null || pass == null) {
throw Exception("Failed resolving Cloudflare challenge")
val origRequestUrl = request.url().toString()
val headers = request.headers().toMultimap().mapValues { it.value.getOrNull(0) ?: "" }
handler.post {
val view = WebView(context)
webView = view
view.settings.javaScriptEnabled = true
view.settings.userAgentString = request.header("User-Agent")
view.webViewClient = object : WebViewClientCompat() {
override fun shouldOverrideUrlCompat(view: WebView, url: String): Boolean {
if (isChallengeSolutionUrl(url)) {
solutionUrl = url
latch.countDown()
}
return solutionUrl != null
}
override fun shouldInterceptRequestCompat(
view: WebView,
url: String
): WebResourceResponse? {
if (solutionUrl != null) {
// Intercept any request when we have the solution.
return WebResourceResponse("text/plain", "UTF-8", null)
}
return null
}
override fun onPageFinished(view: WebView, url: String) {
// Http error codes are only received since M
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M &&
url == origRequestUrl && !challengeFound
) {
// The first request didn't return the challenge, abort.
latch.countDown()
}
}
override fun onReceivedErrorCompat(
view: WebView,
errorCode: Int,
description: String?,
failingUrl: String,
isMainFrame: Boolean
) {
if (isMainFrame) {
if (errorCode == 503) {
// Found the cloudflare challenge page.
challengeFound = true
} else {
// Unlock thread, the challenge wasn't found.
latch.countDown()
}
}
}
}
val js = operation
.replace(Regex("""a\.value = (.+ \+ t\.length).+"""), "$1")
.replace(Regex("""\s{3,}[a-z](?: = |\.).+"""), "")
.replace("t.length", "${domain.length}")
.replace("\n", "")
val result = duktape.evaluate(js) as Double
val cloudflareUrl = HttpUrl.parse("${url.scheme()}://$domain/cdn-cgi/l/chk_jschl")!!
.newBuilder()
.addQueryParameter("jschl_vc", challenge)
.addQueryParameter("pass", pass)
.addQueryParameter("jschl_answer", "$result")
.toString()
val cloudflareHeaders = originalRequest.headers()
.newBuilder()
.add("Referer", url.toString())
.add("Accept", "text/html,application/xhtml+xml,application/xml")
.add("Accept-Language", "en")
.build()
return GET(cloudflareUrl, cloudflareHeaders, cache = CacheControl.Builder().build())
webView?.loadUrl(origRequestUrl, headers)
}
// Wait a reasonable amount of time to retrieve the solution. The minimum should be
// around 4 seconds but it can take more due to slow networks or server issues.
latch.await(12, TimeUnit.SECONDS)
handler.post {
webView?.stopLoading()
webView?.destroy()
}
val solution = solutionUrl ?: throw Exception("Challenge not found")
return Request.Builder().get()
.url(solution)
.headers(request.headers())
.addHeader("Referer", origRequestUrl)
.addHeader("Accept", "text/html,application/xhtml+xml,application/xml")
.addHeader("Accept-Language", "en")
.build()
}
}

View File

@ -2,11 +2,7 @@ package eu.kanade.tachiyomi.network
import android.content.Context
import android.os.Build
import okhttp3.Cache
import okhttp3.CipherSuite
import okhttp3.ConnectionSpec
import okhttp3.OkHttpClient
import okhttp3.TlsVersion
import okhttp3.*
import java.io.File
import java.io.IOException
import java.net.InetAddress
@ -15,11 +11,7 @@ import java.net.UnknownHostException
import java.security.KeyManagementException
import java.security.KeyStore
import java.security.NoSuchAlgorithmException
import javax.net.ssl.SSLContext
import javax.net.ssl.SSLSocket
import javax.net.ssl.SSLSocketFactory
import javax.net.ssl.TrustManagerFactory
import javax.net.ssl.X509TrustManager
import javax.net.ssl.*
class NetworkHelper(context: Context) {
@ -27,7 +19,7 @@ class NetworkHelper(context: Context) {
private val cacheSize = 5L * 1024 * 1024 // 5 MiB
private val cookieManager = PersistentCookieJar(context)
val cookieManager = AndroidCookieJar(context)
val client = OkHttpClient.Builder()
.cookieJar(cookieManager)
@ -36,12 +28,9 @@ class NetworkHelper(context: Context) {
.build()
val cloudflareClient = client.newBuilder()
.addInterceptor(CloudflareInterceptor())
.addInterceptor(CloudflareInterceptor(context))
.build()
val cookies: PersistentCookieStore
get() = cookieManager.store
private fun OkHttpClient.Builder.enableTLS12(): OkHttpClient.Builder {
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT) {
return this

View File

@ -1,19 +0,0 @@
package eu.kanade.tachiyomi.network
import android.content.Context
import okhttp3.Cookie
import okhttp3.CookieJar
import okhttp3.HttpUrl
class PersistentCookieJar(context: Context) : CookieJar {
val store = PersistentCookieStore(context)
override fun saveFromResponse(url: HttpUrl, cookies: List<Cookie>) {
store.addAll(url, cookies)
}
override fun loadForRequest(url: HttpUrl): List<Cookie> {
return store.get(url)
}
}

View File

@ -1,73 +0,0 @@
package eu.kanade.tachiyomi.network
import android.content.Context
import okhttp3.Cookie
import okhttp3.HttpUrl
import java.net.URI
import java.util.concurrent.ConcurrentHashMap
class PersistentCookieStore(context: Context) {
private val cookieMap = ConcurrentHashMap<String, List<Cookie>>()
private val prefs = context.getSharedPreferences("cookie_store", Context.MODE_PRIVATE)
init {
for ((key, value) in prefs.all) {
@Suppress("UNCHECKED_CAST")
val cookies = value as? Set<String>
if (cookies != null) {
try {
val url = HttpUrl.parse("http://$key") ?: continue
val nonExpiredCookies = cookies.mapNotNull { Cookie.parse(url, it) }
.filter { !it.hasExpired() }
cookieMap.put(key, nonExpiredCookies)
} catch (e: Exception) {
// Ignore
}
}
}
}
@Synchronized
fun addAll(url: HttpUrl, cookies: List<Cookie>) {
val key = url.uri().host
// Append or replace the cookies for this domain.
val cookiesForDomain = cookieMap[key].orEmpty().toMutableList()
for (cookie in cookies) {
// Find a cookie with the same name. Replace it if found, otherwise add a new one.
val pos = cookiesForDomain.indexOfFirst { it.name() == cookie.name() }
if (pos == -1) {
cookiesForDomain.add(cookie)
} else {
cookiesForDomain[pos] = cookie
}
}
cookieMap.put(key, cookiesForDomain)
// Get cookies to be stored in disk
val newValues = cookiesForDomain.asSequence()
.filter { it.persistent() && !it.hasExpired() }
.map(Cookie::toString)
.toSet()
prefs.edit().putStringSet(key, newValues).apply()
}
@Synchronized
fun removeAll() {
prefs.edit().clear().apply()
cookieMap.clear()
}
fun get(url: HttpUrl) = get(url.uri().host)
fun get(uri: URI) = get(uri.host)
private fun get(url: String): List<Cookie> {
return cookieMap[url].orEmpty().filter { !it.hasExpired() }
}
private fun Cookie.hasExpired() = System.currentTimeMillis() >= expiresAt()
}

View File

@ -6,11 +6,6 @@ import eu.kanade.tachiyomi.source.model.Page
import eu.kanade.tachiyomi.source.model.SChapter
import eu.kanade.tachiyomi.source.model.SManga
import eu.kanade.tachiyomi.source.online.HttpSource
import eu.kanade.tachiyomi.source.online.english.*
import eu.kanade.tachiyomi.source.online.german.WieManga
import eu.kanade.tachiyomi.source.online.russian.Mangachan
import eu.kanade.tachiyomi.source.online.russian.Mintmanga
import eu.kanade.tachiyomi.source.online.russian.Readmanga
import rx.Observable
open class SourceManager(private val context: Context) {
@ -48,17 +43,7 @@ open class SourceManager(private val context: Context) {
}
private fun createInternalSources(): List<Source> = listOf(
LocalSource(context),
Batoto(),
Mangahere(),
Mangafox(),
Kissmanga(),
Readmanga(),
Mintmanga(),
Mangachan(),
Readmangatoday(),
Mangasee(),
WieManga()
LocalSource(context)
)
private inner class StubSource(override val id: Long) : Source {

View File

@ -1,31 +0,0 @@
package eu.kanade.tachiyomi.source.online.english
import eu.kanade.tachiyomi.source.Source
import eu.kanade.tachiyomi.source.model.Page
import eu.kanade.tachiyomi.source.model.SChapter
import eu.kanade.tachiyomi.source.model.SManga
import rx.Observable
class Batoto : Source {
override val id: Long = 1
override val name = "Batoto"
override fun fetchMangaDetails(manga: SManga): Observable<SManga> {
return Observable.error(Exception("RIP Batoto"))
}
override fun fetchChapterList(manga: SManga): Observable<List<SChapter>> {
return Observable.error(Exception("RIP Batoto"))
}
override fun fetchPageList(chapter: SChapter): Observable<List<Page>> {
return Observable.error(Exception("RIP Batoto"))
}
override fun toString(): String {
return "$name (EN)"
}
}

View File

@ -1,253 +0,0 @@
package eu.kanade.tachiyomi.source.online.english
import com.squareup.duktape.Duktape
import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.network.POST
import eu.kanade.tachiyomi.source.model.*
import eu.kanade.tachiyomi.source.online.ParsedHttpSource
import okhttp3.FormBody
import okhttp3.Headers
import okhttp3.OkHttpClient
import okhttp3.Request
import okhttp3.Response
import org.jsoup.nodes.Document
import org.jsoup.nodes.Element
import timber.log.Timber
import java.text.SimpleDateFormat
import java.util.regex.Pattern
class Kissmanga : ParsedHttpSource() {
override val id: Long = 4
override val name = "Kissmanga"
override val baseUrl = "http://kissmanga.com"
override val lang = "en"
override val supportsLatest = true
override val client: OkHttpClient = network.cloudflareClient
override fun headersBuilder(): Headers.Builder {
return Headers.Builder()
.add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64) Gecko/20100101 Firefox/60")
}
override fun popularMangaSelector() = "table.listing tr:gt(1)"
override fun latestUpdatesSelector() = "table.listing tr:gt(1)"
override fun popularMangaRequest(page: Int): Request {
return GET("$baseUrl/MangaList/MostPopular?page=$page", headers)
}
override fun latestUpdatesRequest(page: Int): Request {
return GET("http://kissmanga.com/MangaList/LatestUpdate?page=$page", headers)
}
override fun popularMangaFromElement(element: Element): SManga {
val manga = SManga.create()
element.select("td a:eq(0)").first().let {
manga.setUrlWithoutDomain(it.attr("href"))
val title = it.text()
//check if cloudfire email obfuscation is affecting title name
if (title.contains("[email protected]", true)) {
try {
var str: String = it.html()
//get the number
str = str.substringAfter("data-cfemail=\"")
str = str.substringBefore("\">[email")
val sb = StringBuilder()
//convert number to char
val r = Integer.valueOf(str.substring(0, 2), 16)!!
var i = 2
while (i < str.length) {
val c = (Integer.valueOf(str.substring(i, i + 2), 16) xor r).toChar()
sb.append(c)
i += 2
}
//replace the new word into the title
manga.title = title.replace("[email protected]", sb.toString(), true)
} catch (e: Exception) {
//on error just default to obfuscated title
Timber.e("error parsing [email protected]", e)
manga.title = title
}
} else {
manga.title = title
}
}
return manga
}
override fun latestUpdatesFromElement(element: Element): SManga {
return popularMangaFromElement(element)
}
override fun popularMangaNextPageSelector() = "li > a:contains( Next)"
override fun latestUpdatesNextPageSelector(): String = "ul.pager > li > a:contains(Next)"
override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
val form = FormBody.Builder().apply {
add("mangaName", query)
for (filter in if (filters.isEmpty()) getFilterList() else filters) {
when (filter) {
is Author -> add("authorArtist", filter.state)
is Status -> add("status", arrayOf("", "Completed", "Ongoing")[filter.state])
is GenreList -> filter.state.forEach { genre -> add("genres", genre.state.toString()) }
}
}
}
return POST("$baseUrl/AdvanceSearch", headers, form.build())
}
override fun searchMangaSelector() = popularMangaSelector()
override fun searchMangaFromElement(element: Element): SManga {
return popularMangaFromElement(element)
}
override fun searchMangaNextPageSelector() = null
override fun mangaDetailsParse(document: Document): SManga {
val infoElement = document.select("div.barContent").first()
val manga = SManga.create()
manga.author = infoElement.select("p:has(span:contains(Author:)) > a").first()?.text()
manga.genre = infoElement.select("p:has(span:contains(Genres:)) > *:gt(0)").text()
manga.description = infoElement.select("p:has(span:contains(Summary:)) ~ p").text()
manga.status = infoElement.select("p:has(span:contains(Status:))").first()?.text().orEmpty().let { parseStatus(it) }
manga.thumbnail_url = document.select(".rightBox:eq(0) img").first()?.attr("src")
return manga
}
fun parseStatus(status: String) = when {
status.contains("Ongoing") -> SManga.ONGOING
status.contains("Completed") -> SManga.COMPLETED
else -> SManga.UNKNOWN
}
override fun chapterListSelector() = "table.listing tr:gt(1)"
override fun chapterFromElement(element: Element): SChapter {
val urlElement = element.select("a").first()
val chapter = SChapter.create()
chapter.setUrlWithoutDomain(urlElement.attr("href"))
chapter.name = urlElement.text()
chapter.date_upload = element.select("td:eq(1)").first()?.text()?.let {
SimpleDateFormat("MM/dd/yyyy").parse(it).time
} ?: 0
return chapter
}
override fun pageListRequest(chapter: SChapter) = POST(baseUrl + chapter.url, headers)
override fun pageListParse(response: Response): List<Page> {
val body = response.body()!!.string()
val pages = mutableListOf<Page>()
// Kissmanga now encrypts the urls, so we need to execute these two scripts in JS.
val ca = client.newCall(GET("$baseUrl/Scripts/ca.js", headers)).execute().body()!!.string()
val lo = client.newCall(GET("$baseUrl/Scripts/lo.js", headers)).execute().body()!!.string()
Duktape.create().use {
it.evaluate(ca)
it.evaluate(lo)
// There are two functions in an inline script needed to decrypt the urls. We find and
// execute them.
var p = Pattern.compile("(var.*CryptoJS.*)")
var m = p.matcher(body)
while (m.find()) {
it.evaluate(m.group(1))
}
// Finally find all the urls and decrypt them in JS.
p = Pattern.compile("""lstImages.push\((.*)\);""")
m = p.matcher(body)
var i = 0
while (m.find()) {
val url = it.evaluate(m.group(1)) as String
pages.add(Page(i++, "", url))
}
}
return pages
}
override fun pageListParse(document: Document): List<Page> {
throw Exception("Not used")
}
override fun imageUrlRequest(page: Page) = GET(page.url)
override fun imageUrlParse(document: Document) = ""
private class Status : Filter.TriState("Completed")
private class Author : Filter.Text("Author")
private class Genre(name: String) : Filter.TriState(name)
private class GenreList(genres: List<Genre>) : Filter.Group<Genre>("Genres", genres)
override fun getFilterList() = FilterList(
Author(),
Status(),
GenreList(getGenreList())
)
// $("select[name=\"genres\"]").map((i,el) => `Genre("${$(el).next().text().trim()}", ${i})`).get().join(',\n')
// on http://kissmanga.com/AdvanceSearch
private fun getGenreList() = listOf(
Genre("4-Koma"),
Genre("Action"),
Genre("Adult"),
Genre("Adventure"),
Genre("Comedy"),
Genre("Comic"),
Genre("Cooking"),
Genre("Doujinshi"),
Genre("Drama"),
Genre("Ecchi"),
Genre("Fantasy"),
Genre("Gender Bender"),
Genre("Harem"),
Genre("Historical"),
Genre("Horror"),
Genre("Josei"),
Genre("Lolicon"),
Genre("Manga"),
Genre("Manhua"),
Genre("Manhwa"),
Genre("Martial Arts"),
Genre("Mature"),
Genre("Mecha"),
Genre("Medical"),
Genre("Music"),
Genre("Mystery"),
Genre("One shot"),
Genre("Psychological"),
Genre("Romance"),
Genre("School Life"),
Genre("Sci-fi"),
Genre("Seinen"),
Genre("Shotacon"),
Genre("Shoujo"),
Genre("Shoujo Ai"),
Genre("Shounen"),
Genre("Shounen Ai"),
Genre("Slice of Life"),
Genre("Smut"),
Genre("Sports"),
Genre("Supernatural"),
Genre("Tragedy"),
Genre("Webtoon"),
Genre("Yaoi"),
Genre("Yuri")
)
}

View File

@ -1,231 +0,0 @@
package eu.kanade.tachiyomi.source.online.english
import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.source.model.*
import eu.kanade.tachiyomi.source.online.ParsedHttpSource
import okhttp3.HttpUrl
import okhttp3.Request
import org.jsoup.nodes.Document
import org.jsoup.nodes.Element
import java.text.ParseException
import java.text.SimpleDateFormat
import java.util.*
class Mangafox : ParsedHttpSource() {
override val id: Long = 3
override val name = "Mangafox"
override val baseUrl = "http://mangafox.la"
override val lang = "en"
override val supportsLatest = true
override fun popularMangaSelector() = "div#mangalist > ul.list > li"
override fun popularMangaRequest(page: Int): Request {
val pageStr = if (page != 1) "$page.htm" else ""
return GET("$baseUrl/directory/$pageStr", headers)
}
override fun latestUpdatesSelector() = "div#mangalist > ul.list > li"
override fun latestUpdatesRequest(page: Int): Request {
val pageStr = if (page != 1) "$page.htm" else ""
return GET("$baseUrl/directory/$pageStr?latest")
}
override fun popularMangaFromElement(element: Element): SManga {
val manga = SManga.create()
element.select("a.title").first().let {
manga.setUrlWithoutDomain(it.attr("href"))
manga.title = it.text()
}
return manga
}
override fun latestUpdatesFromElement(element: Element): SManga {
return popularMangaFromElement(element)
}
override fun popularMangaNextPageSelector() = "a:has(span.next)"
override fun latestUpdatesNextPageSelector() = "a:has(span.next)"
override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
val url = HttpUrl.parse("$baseUrl/search.php?name_method=cw&author_method=cw&artist_method=cw&advopts=1")!!.newBuilder().addQueryParameter("name", query)
(if (filters.isEmpty()) getFilterList() else filters).forEach { filter ->
when (filter) {
is Status -> url.addQueryParameter(filter.id, filter.state.toString())
is GenreList -> filter.state.forEach { genre -> url.addQueryParameter(genre.id, genre.state.toString()) }
is TextField -> url.addQueryParameter(filter.key, filter.state)
is Type -> url.addQueryParameter("type", if (filter.state == 0) "" else filter.state.toString())
is OrderBy -> {
url.addQueryParameter("sort", arrayOf("name", "rating", "views", "total_chapters", "last_chapter_time")[filter.state!!.index])
url.addQueryParameter("order", if (filter.state?.ascending == true) "az" else "za")
}
}
}
url.addQueryParameter("page", page.toString())
return GET(url.toString(), headers)
}
override fun searchMangaSelector() = "div#mangalist > ul.list > li"
override fun searchMangaFromElement(element: Element): SManga {
val manga = SManga.create()
element.select("a.title").first().let {
manga.setUrlWithoutDomain(it.attr("href"))
manga.title = it.text()
}
return manga
}
override fun searchMangaNextPageSelector() = "a:has(span.next)"
override fun mangaDetailsParse(document: Document): SManga {
val infoElement = document.select("div#title").first()
val rowElement = infoElement.select("table > tbody > tr:eq(1)").first()
val sideInfoElement = document.select("#series_info").first()
val licensedElement = document.select("div.warning").first()
val manga = SManga.create()
manga.author = rowElement.select("td:eq(1)").first()?.text()
manga.artist = rowElement.select("td:eq(2)").first()?.text()
manga.genre = rowElement.select("td:eq(3)").first()?.text()
manga.description = infoElement.select("p.summary").first()?.text()
val isLicensed = licensedElement?.text()?.contains("licensed")
if (isLicensed == true) {
manga.status = SManga.LICENSED
} else {
manga.status = sideInfoElement.select(".data").first()?.text().orEmpty().let { parseStatus(it) }
}
manga.thumbnail_url = sideInfoElement.select("div.cover > img").first()?.attr("src")
return manga
}
private fun parseStatus(status: String) = when {
status.contains("Ongoing") -> SManga.ONGOING
status.contains("Completed") -> SManga.COMPLETED
else -> SManga.UNKNOWN
}
override fun chapterListSelector() = "div#chapters li div"
override fun chapterFromElement(element: Element): SChapter {
val urlElement = element.select("a.tips").first()
val chapter = SChapter.create()
chapter.setUrlWithoutDomain(urlElement.attr("href"))
chapter.name = element.select("span.title.nowrap").first()?.text()?.let { urlElement.text() + " - " + it } ?: urlElement.text()
chapter.date_upload = element.select("span.date").first()?.text()?.let { parseChapterDate(it) } ?: 0
return chapter
}
private fun parseChapterDate(date: String): Long {
return if ("Today" in date || " ago" in date) {
Calendar.getInstance().apply {
set(Calendar.HOUR_OF_DAY, 0)
set(Calendar.MINUTE, 0)
set(Calendar.SECOND, 0)
set(Calendar.MILLISECOND, 0)
}.timeInMillis
} else if ("Yesterday" in date) {
Calendar.getInstance().apply {
add(Calendar.DATE, -1)
set(Calendar.HOUR_OF_DAY, 0)
set(Calendar.MINUTE, 0)
set(Calendar.SECOND, 0)
set(Calendar.MILLISECOND, 0)
}.timeInMillis
} else {
try {
SimpleDateFormat("MMM d, yyyy", Locale.ENGLISH).parse(date).time
} catch (e: ParseException) {
0L
}
}
}
override fun pageListParse(document: Document): List<Page> {
val url = document.baseUri().substringBeforeLast('/')
val pages = mutableListOf<Page>()
document.select("select.m").first()?.select("option:not([value=0])")?.forEach {
pages.add(Page(pages.size, "$url/${it.attr("value")}.html"))
}
return pages
}
override fun imageUrlParse(document: Document): String {
val url = document.getElementById("image").attr("src")
return if ("compressed?token=" !in url) {
url
} else {
"http://mangafox.me/media/logo.png"
}
}
private class Status(val id: String = "is_completed") : Filter.TriState("Completed")
private class Genre(name: String, val id: String = "genres[$name]") : Filter.TriState(name)
private class TextField(name: String, val key: String) : Filter.Text(name)
private class Type : Filter.Select<String>("Type", arrayOf("Any", "Japanese Manga", "Korean Manhwa", "Chinese Manhua"))
private class OrderBy : Filter.Sort("Order by",
arrayOf("Series name", "Rating", "Views", "Total chapters", "Last chapter"),
Filter.Sort.Selection(2, false))
private class GenreList(genres: List<Genre>) : Filter.Group<Genre>("Genres", genres)
override fun getFilterList() = FilterList(
TextField("Author", "author"),
TextField("Artist", "artist"),
Type(),
Status(),
OrderBy(),
GenreList(getGenreList())
)
// $('select.genres').map((i,el)=>`Genre("${$(el).next().text().trim()}", "${$(el).attr('name')}")`).get().join(',\n')
// on http://mangafox.me/search.php
private fun getGenreList() = listOf(
Genre("Action"),
Genre("Adult"),
Genre("Adventure"),
Genre("Comedy"),
Genre("Doujinshi"),
Genre("Drama"),
Genre("Ecchi"),
Genre("Fantasy"),
Genre("Gender Bender"),
Genre("Harem"),
Genre("Historical"),
Genre("Horror"),
Genre("Josei"),
Genre("Martial Arts"),
Genre("Mature"),
Genre("Mecha"),
Genre("Mystery"),
Genre("One Shot"),
Genre("Psychological"),
Genre("Romance"),
Genre("School Life"),
Genre("Sci-fi"),
Genre("Seinen"),
Genre("Shoujo"),
Genre("Shoujo Ai"),
Genre("Shounen"),
Genre("Shounen Ai"),
Genre("Slice of Life"),
Genre("Smut"),
Genre("Sports"),
Genre("Supernatural"),
Genre("Tragedy"),
Genre("Webtoons"),
Genre("Yaoi"),
Genre("Yuri")
)
}

View File

@ -1,259 +0,0 @@
package eu.kanade.tachiyomi.source.online.english
import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.source.model.*
import eu.kanade.tachiyomi.source.online.ParsedHttpSource
import okhttp3.HttpUrl
import okhttp3.Request
import org.jsoup.nodes.Document
import org.jsoup.nodes.Element
import java.security.SecureRandom
import java.security.cert.X509Certificate
import java.text.ParseException
import java.text.SimpleDateFormat
import java.util.*
import javax.net.ssl.SSLContext
import javax.net.ssl.X509TrustManager
class Mangahere : ParsedHttpSource() {
override val id: Long = 2
override val name = "Mangahere"
override val baseUrl = "http://www.mangahere.cc"
override val lang = "en"
override val supportsLatest = true
private val trustManager = object : X509TrustManager {
override fun getAcceptedIssuers(): Array<X509Certificate> {
return emptyArray()
}
override fun checkClientTrusted(chain: Array<X509Certificate>, authType: String) {
}
override fun checkServerTrusted(chain: Array<X509Certificate>, authType: String) {
}
}
private val sslContext = SSLContext.getInstance("SSL").apply {
init(null, arrayOf(trustManager), SecureRandom())
}
override val client = super.client.newBuilder()
.sslSocketFactory(sslContext.socketFactory, trustManager)
.build()
override fun popularMangaSelector() = "div.directory_list > ul > li"
override fun latestUpdatesSelector() = "div.directory_list > ul > li"
override fun popularMangaRequest(page: Int): Request {
return GET("$baseUrl/directory/$page.htm?views.za", headers)
}
override fun latestUpdatesRequest(page: Int): Request {
return GET("$baseUrl/directory/$page.htm?last_chapter_time.za", headers)
}
private fun mangaFromElement(query: String, element: Element): SManga {
val manga = SManga.create()
element.select(query).first().let {
manga.setUrlWithoutDomain(it.attr("href"))
manga.title = if (it.hasAttr("title")) it.attr("title") else if (it.hasAttr("rel")) it.attr("rel") else it.text()
}
return manga
}
override fun popularMangaFromElement(element: Element): SManga {
return mangaFromElement("div.title > a", element)
}
override fun latestUpdatesFromElement(element: Element): SManga {
return popularMangaFromElement(element)
}
override fun popularMangaNextPageSelector() = "div.next-page > a.next"
override fun latestUpdatesNextPageSelector() = "div.next-page > a.next"
override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
val url = HttpUrl.parse("$baseUrl/search.php?name_method=cw&author_method=cw&artist_method=cw&advopts=1")!!.newBuilder().addQueryParameter("name", query)
(if (filters.isEmpty()) getFilterList() else filters).forEach { filter ->
when (filter) {
is Status -> url.addQueryParameter("is_completed", arrayOf("", "1", "0")[filter.state])
is GenreList -> filter.state.forEach { genre -> url.addQueryParameter(genre.id, genre.state.toString()) }
is TextField -> url.addQueryParameter(filter.key, filter.state)
is Type -> url.addQueryParameter("direction", arrayOf("", "rl", "lr")[filter.state])
is OrderBy -> {
url.addQueryParameter("sort", arrayOf("name", "rating", "views", "total_chapters", "last_chapter_time")[filter.state!!.index])
url.addQueryParameter("order", if (filter.state?.ascending == true) "az" else "za")
}
}
}
url.addQueryParameter("page", page.toString())
return GET(url.toString(), headers)
}
override fun searchMangaSelector() = "div.result_search > dl:has(dt)"
override fun searchMangaFromElement(element: Element): SManga {
return mangaFromElement("a.manga_info", element)
}
override fun searchMangaNextPageSelector() = "div.next-page > a.next"
override fun mangaDetailsParse(document: Document): SManga {
val detailElement = document.select(".manga_detail_top").first()
val infoElement = detailElement.select(".detail_topText").first()
val licensedElement = document.select(".mt10.color_ff00.mb10").first()
val manga = SManga.create()
manga.author = infoElement.select("a[href*=author/]").first()?.text()
manga.artist = infoElement.select("a[href*=artist/]").first()?.text()
manga.genre = infoElement.select("li:eq(3)").first()?.text()?.substringAfter("Genre(s):")
manga.description = infoElement.select("#show").first()?.text()?.substringBeforeLast("Show less")
manga.thumbnail_url = detailElement.select("img.img").first()?.attr("src")
if (licensedElement?.text()?.contains("licensed") == true) {
manga.status = SManga.LICENSED
} else {
manga.status = infoElement.select("li:eq(6)").first()?.text().orEmpty().let { parseStatus(it) }
}
return manga
}
private fun parseStatus(status: String) = when {
status.contains("Ongoing") -> SManga.ONGOING
status.contains("Completed") -> SManga.COMPLETED
else -> SManga.UNKNOWN
}
override fun chapterListSelector() = ".detail_list > ul:not([class]) > li"
override fun chapterFromElement(element: Element): SChapter {
val parentEl = element.select("span.left").first()
val urlElement = parentEl.select("a").first()
var volume = parentEl.select("span.mr6")?.first()?.text()?.trim() ?: ""
if (volume.length > 0) {
volume = " - " + volume
}
var title = parentEl?.textNodes()?.last()?.text()?.trim() ?: ""
if (title.length > 0) {
title = " - " + title
}
val chapter = SChapter.create()
chapter.setUrlWithoutDomain(urlElement.attr("href"))
chapter.name = urlElement.text() + volume + title
chapter.date_upload = element.select("span.right").first()?.text()?.let { parseChapterDate(it) } ?: 0
return chapter
}
private fun parseChapterDate(date: String): Long {
return if ("Today" in date) {
Calendar.getInstance().apply {
set(Calendar.HOUR_OF_DAY, 0)
set(Calendar.MINUTE, 0)
set(Calendar.SECOND, 0)
set(Calendar.MILLISECOND, 0)
}.timeInMillis
} else if ("Yesterday" in date) {
Calendar.getInstance().apply {
add(Calendar.DATE, -1)
set(Calendar.HOUR_OF_DAY, 0)
set(Calendar.MINUTE, 0)
set(Calendar.SECOND, 0)
set(Calendar.MILLISECOND, 0)
}.timeInMillis
} else {
try {
SimpleDateFormat("MMM d, yyyy", Locale.ENGLISH).parse(date).time
} catch (e: ParseException) {
0L
}
}
}
override fun pageListParse(document: Document): List<Page> {
val licensedError = document.select(".mangaread_error > .mt10").first()
if (licensedError != null) {
throw Exception(licensedError.text())
}
val pages = mutableListOf<Page>()
document.select("select.wid60").first()?.getElementsByTag("option")?.forEach {
if (!it.attr("value").contains("featured.html")) {
pages.add(Page(pages.size, "http:" + it.attr("value")))
}
}
pages.getOrNull(0)?.imageUrl = imageUrlParse(document)
return pages
}
override fun imageUrlParse(document: Document) = document.getElementById("image").attr("src")
private class Status : Filter.TriState("Completed")
private class Genre(name: String, val id: String = "genres[$name]") : Filter.TriState(name)
private class TextField(name: String, val key: String) : Filter.Text(name)
private class Type : Filter.Select<String>("Type", arrayOf("Any", "Japanese Manga (read from right to left)", "Korean Manhwa (read from left to right)"))
private class OrderBy : Filter.Sort("Order by",
arrayOf("Series name", "Rating", "Views", "Total chapters", "Last chapter"),
Filter.Sort.Selection(2, false))
private class GenreList(genres: List<Genre>) : Filter.Group<Genre>("Genres", genres)
override fun getFilterList() = FilterList(
TextField("Author", "author"),
TextField("Artist", "artist"),
Type(),
Status(),
OrderBy(),
GenreList(getGenreList())
)
// [...document.querySelectorAll("select[id^='genres'")].map((el,i) => `Genre("${el.nextSibling.nextSibling.textContent.trim()}", "${el.getAttribute('name')}")`).join(',\n')
// http://www.mangahere.co/advsearch.htm
private fun getGenreList() = listOf(
Genre("Action"),
Genre("Adventure"),
Genre("Comedy"),
Genre("Doujinshi"),
Genre("Drama"),
Genre("Ecchi"),
Genre("Fantasy"),
Genre("Gender Bender"),
Genre("Harem"),
Genre("Historical"),
Genre("Horror"),
Genre("Josei"),
Genre("Martial Arts"),
Genre("Mature"),
Genre("Mecha"),
Genre("Mystery"),
Genre("One Shot"),
Genre("Psychological"),
Genre("Romance"),
Genre("School Life"),
Genre("Sci-fi"),
Genre("Seinen"),
Genre("Shoujo"),
Genre("Shoujo Ai"),
Genre("Shounen"),
Genre("Shounen Ai"),
Genre("Slice of Life"),
Genre("Sports"),
Genre("Supernatural"),
Genre("Tragedy"),
Genre("Yaoi"),
Genre("Yuri")
)
}

View File

@ -1,249 +0,0 @@
package eu.kanade.tachiyomi.source.online.english
import eu.kanade.tachiyomi.network.POST
import eu.kanade.tachiyomi.source.model.*
import eu.kanade.tachiyomi.source.online.ParsedHttpSource
import okhttp3.FormBody
import okhttp3.Headers
import okhttp3.HttpUrl
import okhttp3.Request
import org.jsoup.nodes.Document
import org.jsoup.nodes.Element
import java.text.SimpleDateFormat
import java.util.regex.Pattern
class Mangasee : ParsedHttpSource() {
override val id: Long = 9
override val name = "Mangasee"
override val baseUrl = "http://mangaseeonline.us"
override val lang = "en"
override val supportsLatest = true
private val recentUpdatesPattern = Pattern.compile("(.*?)\\s(\\d+\\.?\\d*)\\s?(Completed)?")
private val indexPattern = Pattern.compile("-index-(.*?)-")
private val catalogHeaders = Headers.Builder().apply {
add("User-Agent", "Mozilla/5.0 (Windows NT 6.3; WOW64)")
add("Host", "mangaseeonline.us")
}.build()
override fun popularMangaSelector() = "div.requested > div.row"
override fun popularMangaRequest(page: Int): Request {
val (body, requestUrl) = convertQueryToPost(page, "$baseUrl/search/request.php?sortBy=popularity&sortOrder=descending")
return POST(requestUrl, catalogHeaders, body.build())
}
override fun popularMangaFromElement(element: Element): SManga {
val manga = SManga.create()
element.select("a.resultLink").first().let {
manga.setUrlWithoutDomain(it.attr("href"))
manga.title = it.text()
}
return manga
}
override fun popularMangaNextPageSelector() = "button.requestMore"
override fun searchMangaSelector() = "div.requested > div.row"
override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
val url = HttpUrl.parse("$baseUrl/search/request.php")!!.newBuilder()
if (!query.isEmpty()) url.addQueryParameter("keyword", query)
val genres = mutableListOf<String>()
val genresNo = mutableListOf<String>()
for (filter in if (filters.isEmpty()) getFilterList() else filters) {
when (filter) {
is Sort -> {
if (filter.state?.index != 0)
url.addQueryParameter("sortBy", if (filter.state?.index == 1) "dateUpdated" else "popularity")
if (filter.state?.ascending != true)
url.addQueryParameter("sortOrder", "descending")
}
is SelectField -> if (filter.state != 0) url.addQueryParameter(filter.key, filter.values[filter.state])
is TextField -> if (!filter.state.isEmpty()) url.addQueryParameter(filter.key, filter.state)
is GenreList -> filter.state.forEach { genre ->
when (genre.state) {
Filter.TriState.STATE_INCLUDE -> genres.add(genre.name)
Filter.TriState.STATE_EXCLUDE -> genresNo.add(genre.name)
}
}
}
}
if (genres.isNotEmpty()) url.addQueryParameter("genre", genres.joinToString(","))
if (genresNo.isNotEmpty()) url.addQueryParameter("genreNo", genresNo.joinToString(","))
val (body, requestUrl) = convertQueryToPost(page, url.toString())
return POST(requestUrl, catalogHeaders, body.build())
}
private fun convertQueryToPost(page: Int, url: String): Pair<FormBody.Builder, String> {
val url = HttpUrl.parse(url)!!
val body = FormBody.Builder().add("page", page.toString())
for (i in 0..url.querySize() - 1) {
body.add(url.queryParameterName(i), url.queryParameterValue(i))
}
val requestUrl = url.scheme() + "://" + url.host() + url.encodedPath()
return Pair(body, requestUrl)
}
override fun searchMangaFromElement(element: Element): SManga {
val manga = SManga.create()
element.select("a.resultLink").first().let {
manga.setUrlWithoutDomain(it.attr("href"))
manga.title = it.text()
}
return manga
}
override fun searchMangaNextPageSelector() = "button.requestMore"
override fun mangaDetailsParse(document: Document): SManga {
val detailElement = document.select("div.well > div.row").first()
val manga = SManga.create()
manga.author = detailElement.select("a[href^=/search/?author=]").first()?.text()
manga.genre = detailElement.select("span.details > div.row > div:has(b:contains(Genre(s))) > a").map { it.text() }.joinToString()
manga.description = detailElement.select("strong:contains(Description:) + div").first()?.text()
manga.status = detailElement.select("a[href^=/search/?status=]").first()?.text().orEmpty().let { parseStatus(it) }
manga.thumbnail_url = detailElement.select("div > img").first()?.absUrl("src")
return manga
}
private fun parseStatus(status: String) = when {
status.contains("Ongoing (Scan)") -> SManga.ONGOING
status.contains("Complete (Scan)") -> SManga.COMPLETED
else -> SManga.UNKNOWN
}
override fun chapterListSelector() = "div.chapter-list > a"
override fun chapterFromElement(element: Element): SChapter {
val urlElement = element.select("a").first()
val chapter = SChapter.create()
chapter.setUrlWithoutDomain(urlElement.attr("href"))
chapter.name = element.select("span.chapterLabel").first().text()?.let { it } ?: ""
chapter.date_upload = element.select("time").first()?.attr("datetime")?.let { parseChapterDate(it) } ?: 0
return chapter
}
private fun parseChapterDate(dateAsString: String): Long {
return SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ").parse(dateAsString).time
}
override fun pageListParse(document: Document): List<Page> {
val fullUrl = document.baseUri()
val url = fullUrl.substringBeforeLast('/')
val pages = mutableListOf<Page>()
val series = document.select("input.IndexName").first().attr("value")
val chapter = document.select("span.CurChapter").first().text()
var index = ""
val m = indexPattern.matcher(fullUrl)
if (m.find()) {
val indexNumber = m.group(1)
index = "-index-$indexNumber"
}
document.select("div.ContainerNav").first().select("select.PageSelect > option").forEach {
pages.add(Page(pages.size, "$url/$series-chapter-$chapter$index-page-${pages.size + 1}.html"))
}
pages.getOrNull(0)?.imageUrl = imageUrlParse(document)
return pages
}
override fun imageUrlParse(document: Document): String = document.select("img.CurImage").attr("src")
override fun latestUpdatesNextPageSelector() = "button.requestMore"
override fun latestUpdatesSelector(): String = "a.latestSeries"
override fun latestUpdatesRequest(page: Int): Request {
val url = "http://mangaseeonline.net/home/latest.request.php"
val (body, requestUrl) = convertQueryToPost(page, url)
return POST(requestUrl, catalogHeaders, body.build())
}
override fun latestUpdatesFromElement(element: Element): SManga {
val manga = SManga.create()
element.select("a.latestSeries").first().let {
val chapterUrl = it.attr("href")
val indexOfMangaUrl = chapterUrl.indexOf("-chapter-")
val indexOfLastPath = chapterUrl.lastIndexOf("/")
val mangaUrl = chapterUrl.substring(indexOfLastPath, indexOfMangaUrl)
val defaultText = it.select("p.clamp2").text()
val m = recentUpdatesPattern.matcher(defaultText)
val title = if (m.matches()) m.group(1) else defaultText
manga.setUrlWithoutDomain("/manga" + mangaUrl)
manga.title = title
}
return manga
}
private class Sort : Filter.Sort("Sort", arrayOf("Alphabetically", "Date updated", "Popularity"), Filter.Sort.Selection(2, false))
private class Genre(name: String) : Filter.TriState(name)
private class TextField(name: String, val key: String) : Filter.Text(name)
private class SelectField(name: String, val key: String, values: Array<String>, state: Int = 0) : Filter.Select<String>(name, values, state)
private class GenreList(genres: List<Genre>) : Filter.Group<Genre>("Genres", genres)
override fun getFilterList() = FilterList(
TextField("Years", "year"),
TextField("Author", "author"),
SelectField("Scan Status", "status", arrayOf("Any", "Complete", "Discontinued", "Hiatus", "Incomplete", "Ongoing")),
SelectField("Publish Status", "pstatus", arrayOf("Any", "Cancelled", "Complete", "Discontinued", "Hiatus", "Incomplete", "Ongoing", "Unfinished")),
SelectField("Type", "type", arrayOf("Any", "Doujinshi", "Manga", "Manhua", "Manhwa", "OEL", "One-shot")),
Sort(),
GenreList(getGenreList())
)
// [...document.querySelectorAll("label.triStateCheckBox input")].map(el => `Filter("${el.getAttribute('name')}", "${el.nextSibling.textContent.trim()}")`).join(',\n')
// http://mangasee.co/advanced-search/
private fun getGenreList() = listOf(
Genre("Action"),
Genre("Adult"),
Genre("Adventure"),
Genre("Comedy"),
Genre("Doujinshi"),
Genre("Drama"),
Genre("Ecchi"),
Genre("Fantasy"),
Genre("Gender Bender"),
Genre("Harem"),
Genre("Hentai"),
Genre("Historical"),
Genre("Horror"),
Genre("Josei"),
Genre("Lolicon"),
Genre("Martial Arts"),
Genre("Mature"),
Genre("Mecha"),
Genre("Mystery"),
Genre("Psychological"),
Genre("Romance"),
Genre("School Life"),
Genre("Sci-fi"),
Genre("Seinen"),
Genre("Shotacon"),
Genre("Shoujo"),
Genre("Shoujo Ai"),
Genre("Shounen"),
Genre("Shounen Ai"),
Genre("Slice of Life"),
Genre("Smut"),
Genre("Sports"),
Genre("Supernatural"),
Genre("Tragedy"),
Genre("Yaoi"),
Genre("Yuri")
)
}

View File

@ -1,224 +0,0 @@
package eu.kanade.tachiyomi.source.online.english
import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.network.POST
import eu.kanade.tachiyomi.source.model.*
import eu.kanade.tachiyomi.source.online.ParsedHttpSource
import okhttp3.Headers
import okhttp3.OkHttpClient
import okhttp3.Request
import org.jsoup.nodes.Document
import org.jsoup.nodes.Element
import java.util.*
class Readmangatoday : ParsedHttpSource() {
override val id: Long = 8
override val name = "ReadMangaToday"
override val baseUrl = "https://www.readmng.com"
override val lang = "en"
override val supportsLatest = true
override val client: OkHttpClient get() = network.cloudflareClient
/**
* Search only returns data with this set
*/
override fun headersBuilder() = Headers.Builder().apply {
add("User-Agent", "Mozilla/5.0 (Windows NT 6.3; WOW64)")
add("X-Requested-With", "XMLHttpRequest")
}
override fun popularMangaRequest(page: Int): Request {
return GET("$baseUrl/hot-manga/$page", headers)
}
override fun latestUpdatesRequest(page: Int): Request {
return GET("$baseUrl/latest-releases/$page", headers)
}
override fun popularMangaSelector() = "div.hot-manga > div.style-list > div.box"
override fun latestUpdatesSelector() = "div.hot-manga > div.style-grid > div.box"
override fun popularMangaFromElement(element: Element): SManga {
val manga = SManga.create()
element.select("div.title > h2 > a").first().let {
manga.setUrlWithoutDomain(it.attr("href"))
manga.title = it.attr("title")
}
return manga
}
override fun latestUpdatesFromElement(element: Element): SManga {
return popularMangaFromElement(element)
}
override fun popularMangaNextPageSelector() = "div.hot-manga > ul.pagination > li > a:contains(»)"
override fun latestUpdatesNextPageSelector() = "div.hot-manga > ul.pagination > li > a:contains(»)"
override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
val builder = okhttp3.FormBody.Builder()
builder.add("manga-name", query)
(if (filters.isEmpty()) getFilterList() else filters).forEach { filter ->
when (filter) {
is TextField -> builder.add(filter.key, filter.state)
is Type -> builder.add("type", arrayOf("all", "japanese", "korean", "chinese")[filter.state])
is Status -> builder.add("status", arrayOf("both", "completed", "ongoing")[filter.state])
is GenreList -> filter.state.forEach { genre ->
when (genre.state) {
Filter.TriState.STATE_INCLUDE -> builder.add("include[]", genre.id.toString())
Filter.TriState.STATE_EXCLUDE -> builder.add("exclude[]", genre.id.toString())
}
}
}
}
return POST("$baseUrl/service/advanced_search", headers, builder.build())
}
override fun searchMangaSelector() = "div.style-list > div.box"
override fun searchMangaFromElement(element: Element): SManga {
val manga = SManga.create()
element.select("div.title > h2 > a").first().let {
manga.setUrlWithoutDomain(it.attr("href"))
manga.title = it.attr("title")
}
return manga
}
override fun searchMangaNextPageSelector() = "div.next-page > a.next"
override fun mangaDetailsParse(document: Document): SManga {
val detailElement = document.select("div.movie-meta").first()
val genreElement = detailElement.select("dl.dl-horizontal > dd:eq(5) a")
val manga = SManga.create()
manga.author = document.select("ul.cast-list li.director > ul a").first()?.text()
manga.artist = document.select("ul.cast-list li:not(.director) > ul a").first()?.text()
manga.description = detailElement.select("li.movie-detail").first()?.text()
manga.status = detailElement.select("dl.dl-horizontal > dd:eq(3)").first()?.text().orEmpty().let { parseStatus(it) }
manga.thumbnail_url = detailElement.select("img.img-responsive").first()?.attr("src")
var genres = mutableListOf<String>()
genreElement?.forEach { genres.add(it.text()) }
manga.genre = genres.joinToString(", ")
return manga
}
private fun parseStatus(status: String) = when {
status.contains("Ongoing") -> SManga.ONGOING
status.contains("Completed") -> SManga.COMPLETED
else -> SManga.UNKNOWN
}
override fun chapterListSelector() = "ul.chp_lst > li"
override fun chapterFromElement(element: Element): SChapter {
val urlElement = element.select("a").first()
val chapter = SChapter.create()
chapter.setUrlWithoutDomain(urlElement.attr("href"))
chapter.name = urlElement.select("span.val").text()
chapter.date_upload = element.select("span.dte").first()?.text()?.let { parseChapterDate(it) } ?: 0
return chapter
}
private fun parseChapterDate(date: String): Long {
val dateWords: List<String> = date.split(" ")
if (dateWords.size == 3) {
val timeAgo = Integer.parseInt(dateWords[0])
val date: Calendar = Calendar.getInstance()
if (dateWords[1].contains("Minute")) {
date.add(Calendar.MINUTE, -timeAgo)
} else if (dateWords[1].contains("Hour")) {
date.add(Calendar.HOUR_OF_DAY, -timeAgo)
} else if (dateWords[1].contains("Day")) {
date.add(Calendar.DAY_OF_YEAR, -timeAgo)
} else if (dateWords[1].contains("Week")) {
date.add(Calendar.WEEK_OF_YEAR, -timeAgo)
} else if (dateWords[1].contains("Month")) {
date.add(Calendar.MONTH, -timeAgo)
} else if (dateWords[1].contains("Year")) {
date.add(Calendar.YEAR, -timeAgo)
}
return date.timeInMillis
}
return 0L
}
override fun pageListParse(document: Document): List<Page> {
val pages = mutableListOf<Page>()
document.select("ul.list-switcher-2 > li > select.jump-menu").first().getElementsByTag("option").forEach {
pages.add(Page(pages.size, it.attr("value")))
}
pages.getOrNull(0)?.imageUrl = imageUrlParse(document)
return pages
}
override fun imageUrlParse(document: Document) = document.select("#chapter_img").first().attr("src")
private class Status : Filter.TriState("Completed")
private class Genre(name: String, val id: Int) : Filter.TriState(name)
private class TextField(name: String, val key: String) : Filter.Text(name)
private class Type : Filter.Select<String>("Type", arrayOf("All", "Japanese Manga", "Korean Manhwa", "Chinese Manhua"))
private class GenreList(genres: List<Genre>) : Filter.Group<Genre>("Genres", genres)
override fun getFilterList() = FilterList(
TextField("Author", "author-name"),
TextField("Artist", "artist-name"),
Type(),
Status(),
GenreList(getGenreList())
)
// [...document.querySelectorAll("ul.manga-cat span")].map(el => `Genre("${el.nextSibling.textContent.trim()}", ${el.getAttribute('data-id')})`).join(',\n')
// http://www.readmanga.today/advanced-search
private fun getGenreList() = listOf(
Genre("Action", 2),
Genre("Adventure", 4),
Genre("Comedy", 5),
Genre("Doujinshi", 6),
Genre("Drama", 7),
Genre("Ecchi", 8),
Genre("Fantasy", 9),
Genre("Gender Bender", 10),
Genre("Harem", 11),
Genre("Historical", 12),
Genre("Horror", 13),
Genre("Josei", 14),
Genre("Lolicon", 15),
Genre("Martial Arts", 16),
Genre("Mature", 17),
Genre("Mecha", 18),
Genre("Mystery", 19),
Genre("One shot", 20),
Genre("Psychological", 21),
Genre("Romance", 22),
Genre("School Life", 23),
Genre("Sci-fi", 24),
Genre("Seinen", 25),
Genre("Shotacon", 26),
Genre("Shoujo", 27),
Genre("Shoujo Ai", 28),
Genre("Shounen", 29),
Genre("Shounen Ai", 30),
Genre("Slice of Life", 31),
Genre("Smut", 32),
Genre("Sports", 33),
Genre("Supernatural", 34),
Genre("Tragedy", 35),
Genre("Yaoi", 36),
Genre("Yuri", 37)
)
}

View File

@ -1,122 +0,0 @@
package eu.kanade.tachiyomi.source.online.german
import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.source.model.FilterList
import eu.kanade.tachiyomi.source.model.Page
import eu.kanade.tachiyomi.source.model.SChapter
import eu.kanade.tachiyomi.source.model.SManga
import eu.kanade.tachiyomi.source.online.ParsedHttpSource
import okhttp3.Request
import org.jsoup.nodes.Document
import org.jsoup.nodes.Element
import java.text.SimpleDateFormat
class WieManga : ParsedHttpSource() {
override val id: Long = 10
override val name = "Wie Manga!"
override val baseUrl = "http://www.wiemanga.com"
override val lang = "de"
override val supportsLatest = true
override fun popularMangaSelector() = ".booklist td > div"
override fun latestUpdatesSelector() = ".booklist td > div"
override fun popularMangaRequest(page: Int): Request {
return GET("$baseUrl/list/Hot-Book/", headers)
}
override fun latestUpdatesRequest(page: Int): Request {
return GET("$baseUrl/list/New-Update/", headers)
}
override fun popularMangaFromElement(element: Element): SManga {
val image = element.select("dt img")
val title = element.select("dd a:first-child")
val manga = SManga.create()
manga.setUrlWithoutDomain(title.attr("href"))
manga.title = title.text()
manga.thumbnail_url = image.attr("src")
return manga
}
override fun latestUpdatesFromElement(element: Element): SManga {
return popularMangaFromElement(element)
}
override fun popularMangaNextPageSelector() = null
override fun latestUpdatesNextPageSelector() = null
override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
return GET("$baseUrl/search/?wd=$query", headers)
}
override fun searchMangaSelector() = ".searchresult td > div"
override fun searchMangaFromElement(element: Element): SManga {
val image = element.select(".resultimg img")
val title = element.select(".resultbookname")
val manga = SManga.create()
manga.setUrlWithoutDomain(title.attr("href"))
manga.title = title.text()
manga.thumbnail_url = image.attr("src")
return manga
}
override fun searchMangaNextPageSelector() = ".pagetor a.l"
override fun mangaDetailsParse(document: Document): SManga {
val imageElement = document.select(".bookmessgae tr > td:nth-child(1)").first()
val infoElement = document.select(".bookmessgae tr > td:nth-child(2)").first()
val manga = SManga.create()
manga.author = infoElement.select("dd:nth-of-type(2) a").first()?.text()
manga.artist = infoElement.select("dd:nth-of-type(3) a").first()?.text()
manga.description = infoElement.select("dl > dt:last-child").first()?.text()?.replaceFirst("Beschreibung", "")
manga.thumbnail_url = imageElement.select("img").first()?.attr("src")
if (manga.author == "RSS")
manga.author = null
if (manga.artist == "RSS")
manga.artist = null
return manga
}
override fun chapterListSelector() = ".chapterlist tr:not(:first-child)"
override fun chapterFromElement(element: Element): SChapter {
val urlElement = element.select(".col1 a").first()
val dateElement = element.select(".col3 a").first()
val chapter = SChapter.create()
chapter.setUrlWithoutDomain(urlElement.attr("href"))
chapter.name = urlElement.text()
chapter.date_upload = dateElement?.text()?.let { parseChapterDate(it) } ?: 0
return chapter
}
private fun parseChapterDate(date: String): Long {
return SimpleDateFormat("yyyy-MM-dd hh:mm:ss").parse(date).time
}
override fun pageListParse(document: Document): List<Page> {
val pages = mutableListOf<Page>()
document.select("select#page").first().select("option").forEach {
pages.add(Page(pages.size, it.attr("value")))
}
return pages
}
override fun imageUrlParse(document: Document) = document.select("img#comicpic").first().attr("src")
}

View File

@ -1,290 +0,0 @@
package eu.kanade.tachiyomi.source.online.russian
import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.source.model.*
import eu.kanade.tachiyomi.source.online.ParsedHttpSource
import eu.kanade.tachiyomi.util.asJsoup
import okhttp3.Request
import okhttp3.Response
import org.jsoup.nodes.Document
import org.jsoup.nodes.Element
import java.text.SimpleDateFormat
import java.util.*
class Mangachan : ParsedHttpSource() {
override val id: Long = 7
override val name = "Mangachan"
override val baseUrl = "http://mangachan.me"
override val lang = "ru"
override val supportsLatest = true
override fun popularMangaRequest(page: Int): Request =
GET("$baseUrl/mostfavorites?offset=${20 * (page - 1)}", headers)
override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
var pageNum = 1
when {
page < 1 -> pageNum = 1
page >= 1 -> pageNum = page
}
val url = if (query.isNotEmpty()) {
"$baseUrl/?do=search&subaction=search&story=$query&search_start=$pageNum"
} else {
var genres = ""
var order = ""
var statusParam = true
var status = ""
for (filter in if (filters.isEmpty()) getFilterList() else filters) {
when (filter) {
is GenreList -> {
filter.state.forEach { f ->
if (!f.isIgnored()) {
genres += (if (f.isExcluded()) "-" else "") + f.id + '+'
}
}
}
is OrderBy -> {
if (filter.state!!.ascending && filter.state!!.index == 0) {
statusParam = false
}
}
is Status -> status = arrayOf("", "all_done", "end", "ongoing", "new_ch")[filter.state]
}
}
if (genres.isNotEmpty()) {
for (filter in filters) {
when (filter) {
is OrderBy -> {
order = if (filter.state!!.ascending) {
arrayOf("", "&n=favasc", "&n=abcdesc", "&n=chasc")[filter.state!!.index]
} else {
arrayOf("&n=dateasc", "&n=favdesc", "&n=abcasc", "&n=chdesc")[filter.state!!.index]
}
}
}
}
if (statusParam) {
"$baseUrl/tags/${genres.dropLast(1)}$order?offset=${20 * (pageNum - 1)}&status=$status"
} else {
"$baseUrl/tags/$status/${genres.dropLast(1)}/$order?offset=${20 * (pageNum - 1)}"
}
} else {
for (filter in filters) {
when (filter) {
is OrderBy -> {
order = if (filter.state!!.ascending) {
arrayOf("manga/new", "manga/new&n=favasc", "manga/new&n=abcdesc", "manga/new&n=chasc")[filter.state!!.index]
} else {
arrayOf("manga/new&n=dateasc", "mostfavorites", "catalog", "sortch")[filter.state!!.index]
}
}
}
}
if (statusParam) {
"$baseUrl/$order?offset=${20 * (pageNum - 1)}&status=$status"
} else {
"$baseUrl/$order/$status?offset=${20 * (pageNum - 1)}"
}
}
}
return GET(url, headers)
}
override fun latestUpdatesRequest(page: Int): Request = GET("$baseUrl/newestch?page=$page")
override fun popularMangaSelector() = "div.content_row"
override fun latestUpdatesSelector() = "ul.area_rightNews li"
override fun searchMangaSelector() = popularMangaSelector()
override fun popularMangaFromElement(element: Element): SManga {
val manga = SManga.create()
manga.thumbnail_url = element.select("div.manga_images img").first().attr("src")
element.select("h2 > a").first().let {
manga.setUrlWithoutDomain(it.attr("href"))
manga.title = it.text()
}
return manga
}
override fun latestUpdatesFromElement(element: Element): SManga {
val manga = SManga.create()
element.select("a:nth-child(1)").first().let {
manga.setUrlWithoutDomain(it.attr("href"))
manga.title = it.text()
}
return manga
}
override fun searchMangaFromElement(element: Element): SManga = popularMangaFromElement(element)
override fun popularMangaNextPageSelector() = "a:contains(Вперед)"
override fun latestUpdatesNextPageSelector() = popularMangaNextPageSelector()
override fun searchMangaNextPageSelector() = "a:contains(Далее)"
private fun searchGenresNextPageSelector() = popularMangaNextPageSelector()
override fun searchMangaParse(response: Response): MangasPage {
val document = response.asJsoup()
var hasNextPage = false
val mangas = document.select(searchMangaSelector()).map { element ->
searchMangaFromElement(element)
}
val nextSearchPage = document.select(searchMangaNextPageSelector())
if (nextSearchPage.isNotEmpty()) {
val query = document.select("input#searchinput").first().attr("value")
val pageNum = nextSearchPage.let { selector ->
val onClick = selector.attr("onclick")
onClick?.split("""\\d+""")
}
nextSearchPage.attr("href", "$baseUrl/?do=search&subaction=search&story=$query&search_start=$pageNum")
hasNextPage = true
}
val nextGenresPage = document.select(searchGenresNextPageSelector())
if (nextGenresPage.isNotEmpty()) {
hasNextPage = true
}
return MangasPage(mangas, hasNextPage)
}
override fun mangaDetailsParse(document: Document): SManga {
val infoElement = document.select("table.mangatitle").first()
val descElement = document.select("div#description").first()
val imgElement = document.select("img#cover").first()
val manga = SManga.create()
manga.author = infoElement.select("tr:eq(2) > td:eq(1)").text()
manga.genre = infoElement.select("tr:eq(5) > td:eq(1)").text()
manga.status = parseStatus(infoElement.select("tr:eq(4) > td:eq(1)").text())
manga.description = descElement.textNodes().first().text()
manga.thumbnail_url = imgElement.attr("src")
return manga
}
private fun parseStatus(element: String): Int = when {
element.contains("перевод завершен") -> SManga.COMPLETED
element.contains("перевод продолжается") -> SManga.ONGOING
else -> SManga.UNKNOWN
}
override fun chapterListSelector() = "table.table_cha tr:gt(1)"
override fun chapterFromElement(element: Element): SChapter {
val urlElement = element.select("a").first()
val chapter = SChapter.create()
chapter.setUrlWithoutDomain(urlElement.attr("href"))
chapter.name = urlElement.text()
chapter.date_upload = element.select("div.date").first()?.text()?.let {
SimpleDateFormat("yyyy-MM-dd", Locale.US).parse(it).time
} ?: 0
return chapter
}
override fun pageListParse(response: Response): List<Page> {
val html = response.body()!!.string()
val beginIndex = html.indexOf("fullimg\":[") + 10
val endIndex = html.indexOf(",]", beginIndex)
val trimmedHtml = html.substring(beginIndex, endIndex).replace("\"", "")
val pageUrls = trimmedHtml.split(',')
return pageUrls.mapIndexed { i, url -> Page(i, "", url) }
}
override fun pageListParse(document: Document): List<Page> {
throw Exception("Not used")
}
override fun imageUrlParse(document: Document) = ""
private class GenreList(genres: List<Genre>) : Filter.Group<Genre>("Тэги", genres)
private class Genre(name: String, val id: String = name.replace(' ', '_')) : Filter.TriState(name)
private class Status : Filter.Select<String>("Статус", arrayOf("Все", "Перевод завершен", "Выпуск завершен", "Онгоинг", "Новые главы"))
private class OrderBy : Filter.Sort("Сортировка",
arrayOf("Дата", "Популярность", "Имя", "Главы"),
Filter.Sort.Selection(1, false))
override fun getFilterList() = FilterList(
Status(),
OrderBy(),
GenreList(getGenreList())
)
/* [...document.querySelectorAll("li.sidetag > a:nth-child(1)")]
* .map(el => `Genre("${el.getAttribute('href').substr(6)}")`).join(',\n')
* on http://mangachan.me/
*/
private fun getGenreList() = listOf(
Genre("18_плюс"),
Genre("bdsm"),
Genre("арт"),
Genre("боевик"),
Genre("боевыескусства"),
Genre("вампиры"),
Genre("веб"),
Genre("гарем"),
Genre("гендерная_интрига"),
Genre("героическое_фэнтези"),
Genre("детектив"),
Genre("дзёсэй"),
Genre("додзинси"),
Genre("драма"),
Genre("игра"),
Genre("инцест"),
Genre("искусство"),
Genre("история"),
Genre("киберпанк"),
Genre("кодомо"),
Genre("комедия"),
Genre("литРПГ"),
Genre("махо-сёдзё"),
Genre("меха"),
Genre("мистика"),
Genre("музыка"),
Genre("научная_фантастика"),
Genre("повседневность"),
Genre("постапокалиптика"),
Genre("приключения"),
Genre("психология"),
Genre("романтика"),
Genre("самурайский_боевик"),
Genre("сборник"),
Genre("сверхъестественное"),
Genre("сказка"),
Genre("спорт"),
Genre("супергерои"),
Genre("сэйнэн"),
Genre("сёдзё"),
Genre("сёдзё-ай"),
Genre("сёнэн"),
Genre("сёнэн-ай"),
Genre("тентакли"),
Genre("трагедия"),
Genre("триллер"),
Genre("ужасы"),
Genre("фантастика"),
Genre("фурри"),
Genre("фэнтези"),
Genre("школа"),
Genre("эротика"),
Genre("юри"),
Genre("яой"),
Genre("ёнкома")
)
}

View File

@ -1,251 +0,0 @@
package eu.kanade.tachiyomi.source.online.russian
import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.source.model.*
import eu.kanade.tachiyomi.source.online.ParsedHttpSource
import okhttp3.Headers
import okhttp3.HttpUrl
import okhttp3.Request
import okhttp3.Response
import org.jsoup.nodes.Document
import org.jsoup.nodes.Element
import java.text.SimpleDateFormat
import java.util.*
import java.util.regex.Pattern
class Mintmanga : ParsedHttpSource() {
override val id: Long = 6
override val name = "Mintmanga"
override val baseUrl = "http://mintmanga.com"
override val lang = "ru"
override val supportsLatest = true
override fun popularMangaRequest(page: Int): Request =
GET("$baseUrl/list?sortType=rate&offset=${70 * (page - 1)}&max=70", headers)
override fun latestUpdatesRequest(page: Int): Request =
GET("$baseUrl/list?sortType=updated&offset=${70 * (page - 1)}&max=70", headers)
override fun popularMangaSelector() = "div.tile"
override fun latestUpdatesSelector() = "div.tile"
override fun popularMangaFromElement(element: Element): SManga {
val manga = SManga.create()
manga.thumbnail_url = element.select("img.lazy").first().attr("data-original")
element.select("h3 > a").first().let {
manga.setUrlWithoutDomain(it.attr("href"))
manga.title = it.attr("title")
}
return manga
}
override fun latestUpdatesFromElement(element: Element): SManga =
popularMangaFromElement(element)
override fun popularMangaNextPageSelector() = "a.nextLink"
override fun latestUpdatesNextPageSelector() = "a.nextLink"
override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
val url = HttpUrl.parse("$baseUrl/search/advanced")!!.newBuilder()
(if (filters.isEmpty()) getFilterList() else filters).forEach { filter ->
when (filter) {
is GenreList -> filter.state.forEach { genre ->
if (genre.state != Filter.TriState.STATE_IGNORE) {
url.addQueryParameter(genre.id, arrayOf("=", "=in", "=ex")[genre.state])
}
}
is Category -> filter.state.forEach { category ->
if (category.state != Filter.TriState.STATE_IGNORE) {
url.addQueryParameter(category.id, arrayOf("=", "=in", "=ex")[category.state])
}
}
}
}
if (!query.isEmpty()) {
url.addQueryParameter("q", query)
}
return GET(url.toString().replace("=%3D", "="), headers)
}
override fun searchMangaSelector() = popularMangaSelector()
override fun searchMangaFromElement(element: Element): SManga = popularMangaFromElement(element)
// max 200 results
override fun searchMangaNextPageSelector(): Nothing? = null
override fun mangaDetailsParse(document: Document): SManga {
val infoElement = document.select("div.leftContent").first()
val manga = SManga.create()
manga.author = infoElement.select("span.elem_author").first()?.text()
manga.genre = infoElement.select("span.elem_genre").text().replace(" ,", ",")
manga.description = infoElement.select("div.manga-description").text()
manga.status = parseStatus(infoElement.html())
manga.thumbnail_url = infoElement.select("img").attr("data-full")
return manga
}
private fun parseStatus(element: String): Int = when {
element.contains("<h3>Запрещена публикация произведения по копирайту</h3>") -> SManga.LICENSED
element.contains("<h1 class=\"names\"> Сингл") || element.contains("<b>Перевод:</b> завершен") -> SManga.COMPLETED
element.contains("<b>Перевод:</b> продолжается") -> SManga.ONGOING
else -> SManga.UNKNOWN
}
override fun chapterListSelector() = "div.chapters-link tbody tr"
override fun chapterFromElement(element: Element): SChapter {
val urlElement = element.select("a").first()
val urlText = urlElement.text()
val chapter = SChapter.create()
chapter.setUrlWithoutDomain(urlElement.attr("href") + "?mtr=1")
if (urlText.endsWith(" новое")) {
chapter.name = urlText.dropLast(6)
} else {
chapter.name = urlText
}
chapter.date_upload = element.select("td.hidden-xxs").last()?.text()?.let {
SimpleDateFormat("dd/MM/yy", Locale.US).parse(it).time
} ?: 0
return chapter
}
override fun prepareNewChapter(chapter: SChapter, manga: SManga) {
val basic = Regex("""\s*([0-9]+)(\s-\s)([0-9]+)\s*""")
val extra = Regex("""\s*([0-9]+\sЭкстра)\s*""")
val single = Regex("""\s*Сингл\s*""")
when {
basic.containsMatchIn(chapter.name) -> {
basic.find(chapter.name)?.let {
val number = it.groups[3]?.value!!
chapter.chapter_number = number.toFloat()
}
}
extra.containsMatchIn(chapter.name) -> // Extra chapters doesn't contain chapter number
chapter.chapter_number = -2f
single.containsMatchIn(chapter.name) -> // Oneshoots, doujinshi and other mangas with one chapter
chapter.chapter_number = 1f
}
}
override fun pageListParse(response: Response): List<Page> {
val html = response.body()!!.string()
val beginIndex = html.indexOf("rm_h.init( [")
val endIndex = html.indexOf("], 0, false);", beginIndex)
val trimmedHtml = html.substring(beginIndex, endIndex)
val p = Pattern.compile("'.*?','.*?',\".*?\"")
val m = p.matcher(trimmedHtml)
val pages = mutableListOf<Page>()
var i = 0
while (m.find()) {
val urlParts = m.group().replace("[\"\']+".toRegex(), "").split(',')
val url = if (urlParts[1].isEmpty() && urlParts[2].startsWith("/static/")) {
baseUrl + urlParts[2]
} else {
urlParts[1] + urlParts[0] + urlParts[2]
}
pages.add(Page(i++, "", url))
}
return pages
}
override fun pageListParse(document: Document): List<Page> {
throw Exception("Not used")
}
override fun imageUrlParse(document: Document) = ""
override fun imageRequest(page: Page): Request {
val imgHeader = Headers.Builder().apply {
add("User-Agent", "Mozilla/5.0 (Windows NT 6.3; WOW64)")
add("Referer", baseUrl)
}.build()
return GET(page.imageUrl!!, imgHeader)
}
private class Genre(name: String, val id: String) : Filter.TriState(name)
private class GenreList(genres: List<Genre>) : Filter.Group<Genre>("Genres", genres)
private class Category(categories: List<Genre>) : Filter.Group<Genre>("Category", categories)
/* [...document.querySelectorAll("tr.advanced_option:nth-child(1) > td:nth-child(3) span.js-link")]
* .map(el => `Genre("${el.textContent.trim()}", "${el.getAttribute('onclick')
* .substr(31,el.getAttribute('onclick').length-33)"})`).join(',\n')
* on http://mintmanga.com/search/advanced
*/
override fun getFilterList() = FilterList(
Category(getCategoryList()),
GenreList(getGenreList())
)
private fun getCategoryList() = listOf(
Genre("В цвете", "el_4614"),
Genre("Веб", "el_1355"),
Genre("Выпуск приостановлен", "el_5232"),
Genre("Ёнкома", "el_2741"),
Genre("Комикс западный", "el_1903"),
Genre("Комикс русский", "el_2173"),
Genre("Манхва", "el_1873"),
Genre("Маньхуа", "el_1875"),
Genre("Не Яой", "el_1874"),
Genre("Ранобэ", "el_5688"),
Genre("Сборник", "el_1348")
)
private fun getGenreList() = listOf(
Genre("арт", "el_2220"),
Genre("бара", "el_1353"),
Genre("боевик", "el_1346"),
Genre("боевые искусства", "el_1334"),
Genre("вампиры", "el_1339"),
Genre("гарем", "el_1333"),
Genre("гендерная интрига", "el_1347"),
Genre("героическое фэнтези", "el_1337"),
Genre("детектив", "el_1343"),
Genre("дзёсэй", "el_1349"),
Genre("додзинси", "el_1332"),
Genre("драма", "el_1310"),
Genre("игра", "el_5229"),
Genre("история", "el_1311"),
Genre("киберпанк", "el_1351"),
Genre("комедия", "el_1328"),
Genre("меха", "el_1318"),
Genre("мистика", "el_1324"),
Genre("научная фантастика", "el_1325"),
Genre("омегаверс", "el_5676"),
Genre("повседневность", "el_1327"),
Genre("постапокалиптика", "el_1342"),
Genre("приключения", "el_1322"),
Genre("психология", "el_1335"),
Genre("романтика", "el_1313"),
Genre("самурайский боевик", "el_1316"),
Genre("сверхъестественное", "el_1350"),
Genre("сёдзё", "el_1314"),
Genre("сёдзё-ай", "el_1320"),
Genre("сёнэн", "el_1326"),
Genre("сёнэн-ай", "el_1330"),
Genre("спорт", "el_1321"),
Genre("сэйнэн", "el_1329"),
Genre("трагедия", "el_1344"),
Genre("триллер", "el_1341"),
Genre("ужасы", "el_1317"),
Genre("фантастика", "el_1331"),
Genre("фэнтези", "el_1323"),
Genre("школа", "el_1319"),
Genre("эротика", "el_1340"),
Genre("этти", "el_1354"),
Genre("юри", "el_1315"),
Genre("яой", "el_1336")
)
}

View File

@ -1,247 +0,0 @@
package eu.kanade.tachiyomi.source.online.russian
import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.source.model.*
import eu.kanade.tachiyomi.source.online.ParsedHttpSource
import okhttp3.Headers
import okhttp3.HttpUrl
import okhttp3.Request
import okhttp3.Response
import org.jsoup.nodes.Document
import org.jsoup.nodes.Element
import java.text.SimpleDateFormat
import java.util.*
import java.util.regex.Pattern
class Readmanga : ParsedHttpSource() {
override val id: Long = 5
override val name = "Readmanga"
override val baseUrl = "http://readmanga.me"
override val lang = "ru"
override val supportsLatest = true
override fun popularMangaSelector() = "div.tile"
override fun latestUpdatesSelector() = "div.tile"
override fun popularMangaRequest(page: Int): Request =
GET("$baseUrl/list?sortType=rate&offset=${70 * (page - 1)}&max=70", headers)
override fun latestUpdatesRequest(page: Int): Request =
GET("$baseUrl/list?sortType=updated&offset=${70 * (page - 1)}&max=70", headers)
override fun popularMangaFromElement(element: Element): SManga {
val manga = SManga.create()
manga.thumbnail_url = element.select("img.lazy").first().attr("data-original")
element.select("h3 > a").first().let {
manga.setUrlWithoutDomain(it.attr("href"))
manga.title = it.attr("title")
}
return manga
}
override fun latestUpdatesFromElement(element: Element): SManga =
popularMangaFromElement(element)
override fun popularMangaNextPageSelector() = "a.nextLink"
override fun latestUpdatesNextPageSelector() = "a.nextLink"
override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
val url = HttpUrl.parse("$baseUrl/search/advanced")!!.newBuilder()
(if (filters.isEmpty()) getFilterList() else filters).forEach { filter ->
when (filter) {
is GenreList -> filter.state.forEach { genre ->
if (genre.state != Filter.TriState.STATE_IGNORE) {
url.addQueryParameter(genre.id, arrayOf("=", "=in", "=ex")[genre.state])
}
}
is Category -> filter.state.forEach { category ->
if (category.state != Filter.TriState.STATE_IGNORE) {
url.addQueryParameter(category.id, arrayOf("=", "=in", "=ex")[category.state])
}
}
}
}
if (!query.isEmpty()) {
url.addQueryParameter("q", query)
}
return GET(url.toString().replace("=%3D", "="), headers)
}
override fun searchMangaSelector() = popularMangaSelector()
override fun searchMangaFromElement(element: Element): SManga = popularMangaFromElement(element)
// max 200 results
override fun searchMangaNextPageSelector(): Nothing? = null
override fun mangaDetailsParse(document: Document): SManga {
val infoElement = document.select("div.leftContent").first()
val manga = SManga.create()
manga.author = infoElement.select("span.elem_author").first()?.text()
manga.genre = infoElement.select("span.elem_genre").text().replace(" ,", ",")
manga.description = infoElement.select("div.manga-description").text()
manga.status = parseStatus(infoElement.html())
manga.thumbnail_url = infoElement.select("img").attr("data-full")
return manga
}
private fun parseStatus(element: String): Int = when {
element.contains("<h3>Запрещена публикация произведения по копирайту</h3>") -> SManga.LICENSED
element.contains("<h1 class=\"names\"> Сингл") || element.contains("<b>Перевод:</b> завершен") -> SManga.COMPLETED
element.contains("<b>Перевод:</b> продолжается") -> SManga.ONGOING
else -> SManga.UNKNOWN
}
override fun chapterListSelector() = "div.chapters-link tbody tr"
override fun chapterFromElement(element: Element): SChapter {
val urlElement = element.select("a").first()
val urlText = urlElement.text()
val chapter = SChapter.create()
chapter.setUrlWithoutDomain(urlElement.attr("href") + "?mtr=1")
if (urlText.endsWith(" новое")) {
chapter.name = urlText.dropLast(6)
} else {
chapter.name = urlText
}
chapter.date_upload = element.select("td.hidden-xxs").last()?.text()?.let {
SimpleDateFormat("dd/MM/yy", Locale.US).parse(it).time
} ?: 0
return chapter
}
override fun prepareNewChapter(chapter: SChapter, manga: SManga) {
val basic = Regex("""\s*([0-9]+)(\s-\s)([0-9]+)\s*""")
val extra = Regex("""\s*([0-9]+\sЭкстра)\s*""")
val single = Regex("""\s*Сингл\s*""")
when {
basic.containsMatchIn(chapter.name) -> {
basic.find(chapter.name)?.let {
val number = it.groups[3]?.value!!
chapter.chapter_number = number.toFloat()
}
}
extra.containsMatchIn(chapter.name) -> // Extra chapters doesn't contain chapter number
chapter.chapter_number = -2f
single.containsMatchIn(chapter.name) -> // Oneshoots, doujinshi and other mangas with one chapter
chapter.chapter_number = 1f
}
}
override fun pageListParse(response: Response): List<Page> {
val html = response.body()!!.string()
val beginIndex = html.indexOf("rm_h.init( [")
val endIndex = html.indexOf("], 0, false);", beginIndex)
val trimmedHtml = html.substring(beginIndex, endIndex)
val p = Pattern.compile("'.*?','.*?',\".*?\"")
val m = p.matcher(trimmedHtml)
val pages = mutableListOf<Page>()
var i = 0
while (m.find()) {
val urlParts = m.group().replace("[\"\']+".toRegex(), "").split(',')
val url = if (urlParts[1].isEmpty() && urlParts[2].startsWith("/static/")) {
baseUrl + urlParts[2]
} else {
urlParts[1] + urlParts[0] + urlParts[2]
}
pages.add(Page(i++, "", url))
}
return pages
}
override fun pageListParse(document: Document): List<Page> {
throw Exception("Not used")
}
override fun imageUrlParse(document: Document) = ""
override fun imageRequest(page: Page): Request {
val imgHeader = Headers.Builder().apply {
add("User-Agent", "Mozilla/5.0 (Windows NT 6.3; WOW64)")
add("Referer", baseUrl)
}.build()
return GET(page.imageUrl!!, imgHeader)
}
private class Genre(name: String, val id: String) : Filter.TriState(name)
private class GenreList(genres: List<Genre>) : Filter.Group<Genre>("Genres", genres)
private class Category(categories: List<Genre>) : Filter.Group<Genre>("Category", categories)
/* [...document.querySelectorAll("tr.advanced_option:nth-child(1) > td:nth-child(3) span.js-link")]
* .map(el => `Genre("${el.textContent.trim()}", $"{el.getAttribute('onclick')
* .substr(31,el.getAttribute('onclick').length-33)"})`).join(',\n')
* on http://readmanga.me/search/advanced
*/
override fun getFilterList() = FilterList(
Category(getCategoryList()),
GenreList(getGenreList())
)
private fun getCategoryList() = listOf(
Genre("В цвете", "el_7290"),
Genre("Веб", "el_2160"),
Genre("Выпуск приостановлен", "el_8033"),
Genre("Ёнкома", "el_2161"),
Genre("Комикс западный", "el_3515"),
Genre("Манхва", "el_3001"),
Genre("Маньхуа", "el_3002"),
Genre("Ранобэ", "el_8575"),
Genre("Сборник", "el_2157")
)
private fun getGenreList() = listOf(
Genre("арт", "el_5685"),
Genre("боевик", "el_2155"),
Genre("боевые искусства", "el_2143"),
Genre("вампиры", "el_2148"),
Genre("гарем", "el_2142"),
Genre("гендерная интрига", "el_2156"),
Genre("героическое фэнтези", "el_2146"),
Genre("детектив", "el_2152"),
Genre("дзёсэй", "el_2158"),
Genre("додзинси", "el_2141"),
Genre("драма", "el_2118"),
Genre("игра", "el_2154"),
Genre("история", "el_2119"),
Genre("киберпанк", "el_8032"),
Genre("кодомо", "el_2137"),
Genre("комедия", "el_2136"),
Genre("махо-сёдзё", "el_2147"),
Genre("меха", "el_2126"),
Genre("мистика", "el_2132"),
Genre("научная фантастика", "el_2133"),
Genre("повседневность", "el_2135"),
Genre("постапокалиптика", "el_2151"),
Genre("приключения", "el_2130"),
Genre("психология", "el_2144"),
Genre("романтика", "el_2121"),
Genre("самурайский боевик", "el_2124"),
Genre("сверхъестественное", "el_2159"),
Genre("сёдзё", "el_2122"),
Genre("сёдзё-ай", "el_2128"),
Genre("сёнэн", "el_2134"),
Genre("сёнэн-ай", "el_2139"),
Genre("спорт", "el_2129"),
Genre("сэйнэн", "el_2138"),
Genre("трагедия", "el_2153"),
Genre("триллер", "el_2150"),
Genre("ужасы", "el_2125"),
Genre("фантастика", "el_2140"),
Genre("фэнтези", "el_2131"),
Genre("школа", "el_2127"),
Genre("этти", "el_2149"),
Genre("юри", "el_2123")
)
}

View File

@ -18,8 +18,10 @@ import kotlinx.android.synthetic.main.catalogue_global_search_controller.*
* This controller should only handle UI actions, IO actions should be done by [CatalogueSearchPresenter]
* [CatalogueSearchCardAdapter.OnMangaClickListener] called when manga is clicked in global search
*/
open class CatalogueSearchController(protected val initialQuery: String? = null) :
NucleusController<CatalogueSearchPresenter>(),
open class CatalogueSearchController(
protected val initialQuery: String? = null,
protected val extensionFilter: String? = null
) : NucleusController<CatalogueSearchPresenter>(),
CatalogueSearchCardAdapter.OnMangaClickListener {
/**
@ -60,7 +62,7 @@ open class CatalogueSearchController(protected val initialQuery: String? = null)
* @return instance of [CatalogueSearchPresenter]
*/
override fun createPresenter(): CatalogueSearchPresenter {
return CatalogueSearchPresenter(initialQuery)
return CatalogueSearchPresenter(initialQuery, extensionFilter)
}
/**
@ -185,4 +187,4 @@ open class CatalogueSearchController(protected val initialQuery: String? = null)
getHolder(source)?.setImage(manga)
}
}
}

View File

@ -5,6 +5,7 @@ import eu.kanade.tachiyomi.data.database.DatabaseHelper
import eu.kanade.tachiyomi.data.database.models.Manga
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.data.preference.getOrDefault
import eu.kanade.tachiyomi.extension.ExtensionManager
import eu.kanade.tachiyomi.source.CatalogueSource
import eu.kanade.tachiyomi.source.Source
import eu.kanade.tachiyomi.source.SourceManager
@ -21,6 +22,7 @@ import rx.subjects.PublishSubject
import timber.log.Timber
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
import uy.kohesive.injekt.injectLazy
/**
* Presenter of [CatalogueSearchController]
@ -32,6 +34,7 @@ import uy.kohesive.injekt.api.get
*/
open class CatalogueSearchPresenter(
val initialQuery: String? = "",
val initialExtensionFilter: String? = null,
val sourceManager: SourceManager = Injekt.get(),
val db: DatabaseHelper = Injekt.get(),
val preferencesHelper: PreferencesHelper = Injekt.get()
@ -40,7 +43,7 @@ open class CatalogueSearchPresenter(
/**
* Enabled sources.
*/
val sources by lazy { getEnabledSources() }
val sources by lazy { getSourcesToQuery() }
/**
* Query from the view.
@ -63,9 +66,16 @@ open class CatalogueSearchPresenter(
*/
private var fetchImageSubscription: Subscription? = null
private val extensionManager by injectLazy<ExtensionManager>()
private var extensionFilter: String? = null
override fun onCreate(savedState: Bundle?) {
super.onCreate(savedState)
extensionFilter = savedState?.getString(CatalogueSearchPresenter::extensionFilter.name) ?:
initialExtensionFilter
// Perform a search with previous or initial state
search(savedState?.getString(BrowseCataloguePresenter::query.name) ?: initialQuery.orEmpty())
}
@ -78,6 +88,7 @@ open class CatalogueSearchPresenter(
override fun onSave(state: Bundle) {
state.putString(BrowseCataloguePresenter::query.name, query)
state.putString(CatalogueSearchPresenter::extensionFilter.name, extensionFilter)
super.onSave(state)
}
@ -97,6 +108,26 @@ open class CatalogueSearchPresenter(
.sortedBy { "(${it.lang}) ${it.name}" }
}
private fun getSourcesToQuery(): List<CatalogueSource> {
val filter = extensionFilter
val enabledSources = getEnabledSources()
if (filter.isNullOrEmpty()) {
return enabledSources
}
val filterSources = extensionManager.installedExtensions
.filter { it.pkgName == filter }
.flatMap { it.sources }
.filter { it in enabledSources }
.filterIsInstance<CatalogueSource>()
if (filterSources.isEmpty()) {
return enabledSources
}
return filterSources
}
/**
* Creates a catalogue search item
*/

View File

@ -126,6 +126,10 @@ class LibraryPresenter(
// Filter when there are no downloads.
if (filterDownloaded) {
// Local manga are always downloaded
if (item.manga.source == LocalSource.ID) {
return@f true
}
// Don't bother with directory checking if download count has been set.
if (item.downloadCount != -1) {
return@f item.downloadCount > 0

View File

@ -1,6 +1,7 @@
package eu.kanade.tachiyomi.ui.main
import android.animation.ObjectAnimator
import android.app.SearchManager
import android.content.Intent
import android.graphics.Color
import android.os.Bundle
@ -15,6 +16,7 @@ import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.ui.base.activity.BaseActivity
import eu.kanade.tachiyomi.ui.base.controller.*
import eu.kanade.tachiyomi.ui.catalogue.CatalogueController
import eu.kanade.tachiyomi.ui.catalogue.global_search.CatalogueSearchController
import eu.kanade.tachiyomi.ui.download.DownloadController
import eu.kanade.tachiyomi.ui.extension.ExtensionController
import eu.kanade.tachiyomi.ui.library.LibraryController
@ -50,6 +52,7 @@ class MainActivity : BaseActivity() {
setTheme(when (preferences.theme()) {
2 -> R.style.Theme_Tachiyomi_Dark
3 -> R.style.Theme_Tachiyomi_Amoled
4 -> R.style.Theme_Tachiyomi_DarkBlue
else -> R.style.Theme_Tachiyomi
})
super.onCreate(savedInstanceState)
@ -157,6 +160,29 @@ class MainActivity : BaseActivity() {
setSelectedDrawerItem(R.id.nav_drawer_downloads)
}
}
Intent.ACTION_SEARCH, "com.google.android.gms.actions.SEARCH_ACTION" -> {
//If the intent match the "standard" Android search intent
// or the Google-specific search intent (triggered by saying or typing "search *query* on *Tachiyomi*" in Google Search/Google Assistant)
//Get the search query provided in extras, and if not null, perform a global search with it.
val query = intent.getStringExtra(SearchManager.QUERY)
if (query != null && !query.isEmpty()) {
if (router.backstackSize > 1) {
router.popToRoot()
}
router.pushController(CatalogueSearchController(query).withFadeTransaction())
}
}
INTENT_SEARCH -> {
val query = intent.getStringExtra(INTENT_SEARCH_QUERY)
val filter = intent.getStringExtra(INTENT_SEARCH_FILTER)
if (query != null && !query.isEmpty()) {
if (router.backstackSize > 1) {
router.popToRoot()
}
router.pushController(CatalogueSearchController(query, filter).withFadeTransaction())
}
}
else -> return false
}
return true
@ -241,6 +267,10 @@ class MainActivity : BaseActivity() {
const val SHORTCUT_CATALOGUES = "eu.kanade.tachiyomi.SHOW_CATALOGUES"
const val SHORTCUT_DOWNLOADS = "eu.kanade.tachiyomi.SHOW_DOWNLOADS"
const val SHORTCUT_MANGA = "eu.kanade.tachiyomi.SHOW_MANGA"
const val INTENT_SEARCH = "eu.kanade.tachiyomi.SEARCH"
const val INTENT_SEARCH_QUERY = "query"
const val INTENT_SEARCH_FILTER = "filter"
}
}

View File

@ -9,6 +9,7 @@ import eu.kanade.tachiyomi.data.database.models.Manga
import eu.kanade.tachiyomi.data.download.DownloadManager
import eu.kanade.tachiyomi.data.download.model.Download
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.source.LocalSource
import eu.kanade.tachiyomi.source.Source
import eu.kanade.tachiyomi.ui.base.presenter.BasePresenter
import eu.kanade.tachiyomi.util.isNullOrUnsubscribed
@ -179,7 +180,7 @@ class ChaptersPresenter(
observable = observable.filter { it.read }
}
if (onlyDownloaded()) {
observable = observable.filter { it.isDownloaded }
observable = observable.filter { it.isDownloaded || it.manga.source == LocalSource.ID }
}
if (onlyBookmarked()) {
observable = observable.filter { it.bookmark }

View File

@ -15,12 +15,7 @@ import android.support.customtabs.CustomTabsIntent
import android.support.v4.content.pm.ShortcutInfoCompat
import android.support.v4.content.pm.ShortcutManagerCompat
import android.support.v4.graphics.drawable.IconCompat
import android.view.LayoutInflater
import android.view.Menu
import android.view.MenuInflater
import android.view.MenuItem
import android.view.View
import android.view.ViewGroup
import android.view.*
import android.widget.Toast
import com.afollestad.materialdialogs.MaterialDialog
import com.bumptech.glide.load.engine.DiskCacheStrategy
@ -138,6 +133,7 @@ class MangaInfoController : NucleusController<MangaInfoPresenter>(),
override fun onOptionsItemSelected(item: MenuItem): Boolean {
when (item.itemId) {
R.id.action_open_in_browser -> openInBrowser()
R.id.action_open_in_web_view -> openInWebView()
R.id.action_share -> shareManga()
R.id.action_add_to_home_screen -> addToHomeScreen()
else -> return super.onOptionsItemSelected(item)
@ -302,6 +298,19 @@ class MangaInfoController : NucleusController<MangaInfoPresenter>(),
}
}
private fun openInWebView() {
val source = presenter.source as? HttpSource ?: return
val url = try {
source.mangaDetailsRequest(presenter.manga).url().toString()
} catch (e: Exception) {
return
}
parentController?.router?.pushController(MangaWebViewController(source.id, url)
.withFadeTransaction())
}
/**
* Called to run Intent with [Intent.ACTION_SEND], which show share dialog.
*/

View File

@ -0,0 +1,58 @@
package eu.kanade.tachiyomi.ui.manga.info
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.webkit.WebView
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.source.SourceManager
import eu.kanade.tachiyomi.source.online.HttpSource
import eu.kanade.tachiyomi.ui.base.controller.BaseController
import eu.kanade.tachiyomi.util.WebViewClientCompat
import uy.kohesive.injekt.injectLazy
class MangaWebViewController(bundle: Bundle? = null) : BaseController(bundle) {
private val sourceManager by injectLazy<SourceManager>()
constructor(sourceId: Long, url: String) : this(Bundle().apply {
putLong(SOURCE_KEY, sourceId)
putString(URL_KEY, url)
})
override fun inflateView(inflater: LayoutInflater, container: ViewGroup): View {
return inflater.inflate(R.layout.manga_info_web_controller, container, false)
}
override fun onViewCreated(view: View) {
super.onViewCreated(view)
val source = sourceManager.get(args.getLong(SOURCE_KEY)) as? HttpSource ?: return
val url = args.getString(URL_KEY) ?: return
val headers = source.headers.toMultimap().mapValues { it.value.getOrNull(0) ?: "" }
val web = view as WebView
web.webViewClient = object : WebViewClientCompat() {
override fun shouldOverrideUrlCompat(view: WebView, url: String): Boolean {
view.loadUrl(url)
return true
}
}
web.settings.javaScriptEnabled = true
web.settings.userAgentString = source.headers["User-Agent"]
web.loadUrl(url, headers)
}
override fun onDestroyView(view: View) {
val web = view as WebView
web.stopLoading()
web.destroy()
super.onDestroyView(view)
}
private companion object {
const val SOURCE_KEY = "source_key"
const val URL_KEY = "url_key"
}
}

View File

@ -6,6 +6,7 @@ import android.content.Context
import android.content.Intent
import android.content.pm.ActivityInfo
import android.content.res.Configuration
import android.graphics.Bitmap
import android.graphics.Color
import android.os.Build
import android.os.Bundle
@ -13,6 +14,7 @@ import android.view.*
import android.view.animation.Animation
import android.view.animation.AnimationUtils
import android.widget.SeekBar
import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.database.models.Chapter
import eu.kanade.tachiyomi.data.database.models.Manga
@ -558,6 +560,9 @@ class ReaderActivity : BaseRxActivity<ReaderPresenter>() {
subscriptions += preferences.showPageNumber().asObservable()
.subscribe { setPageNumberVisibility(it) }
subscriptions += preferences.trueColor().asObservable()
.subscribe { setTrueColor(it) }
subscriptions += preferences.fullscreen().asObservable()
.subscribe { setFullscreen(it) }
@ -614,6 +619,16 @@ class ReaderActivity : BaseRxActivity<ReaderPresenter>() {
page_number.visibility = if (visible) View.VISIBLE else View.INVISIBLE
}
/**
* Sets the 32-bit color mode according to [enabled].
*/
private fun setTrueColor(enabled: Boolean) {
if (enabled)
SubsamplingScaleImageView.setPreferredBitmapConfig(Bitmap.Config.ARGB_8888)
else
SubsamplingScaleImageView.setPreferredBitmapConfig(Bitmap.Config.RGB_565)
}
/**
* Sets the fullscreen reading mode (immersive) according to [enabled].
*/

View File

@ -32,7 +32,7 @@ import timber.log.Timber
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
import java.io.File
import java.util.Date
import java.util.*
import java.util.concurrent.TimeUnit
/**
@ -84,12 +84,25 @@ class ReaderPresenter(
private val chapterList by lazy {
val manga = manga!!
val dbChapters = db.getChapters(manga).executeAsBlocking()
val selectedChapter = dbChapters.find { it.id == chapterId }
?: error("Requested chapter of id $chapterId not found in chapter list")
?: error("Requested chapter of id $chapterId not found in chapter list")
val chaptersForReader =
if (preferences.skipRead()) {
var list = dbChapters.filter { it -> !it.read }.toMutableList()
val find = list.find { it.id == chapterId }
if (find == null) {
list.add(selectedChapter)
}
list
} else {
dbChapters
}
when (manga.sorting) {
Manga.SORTING_SOURCE -> ChapterLoadBySource().get(dbChapters)
Manga.SORTING_NUMBER -> ChapterLoadByNumber().get(dbChapters, selectedChapter)
Manga.SORTING_SOURCE -> ChapterLoadBySource().get(chaptersForReader)
Manga.SORTING_NUMBER -> ChapterLoadByNumber().get(chaptersForReader, selectedChapter)
else -> error("Unknown sorting method")
}.map(::ReaderChapter)
}
@ -165,12 +178,12 @@ class ReaderPresenter(
if (!needsInit()) return
db.getManga(mangaId).asRxObservable()
.first()
.observeOn(AndroidSchedulers.mainThread())
.doOnNext { init(it, initialChapterId) }
.subscribeFirst({ _, _ ->
// Ignore onNext event
}, ReaderActivity::setInitialChapterError)
.first()
.observeOn(AndroidSchedulers.mainThread())
.doOnNext { init(it, initialChapterId) }
.subscribeFirst({ _, _ ->
// Ignore onNext event
}, ReaderActivity::setInitialChapterError)
}
/**
@ -193,13 +206,13 @@ class ReaderPresenter(
// Read chapterList from an io thread because it's retrieved lazily and would block main.
activeChapterSubscription?.unsubscribe()
activeChapterSubscription = Observable
.fromCallable { chapterList.first { chapterId == it.chapter.id } }
.flatMap { getLoadObservable(loader!!, it) }
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribeFirst({ _, _ ->
// Ignore onNext event
}, ReaderActivity::setInitialChapterError)
.fromCallable { chapterList.first { chapterId == it.chapter.id } }
.flatMap { getLoadObservable(loader!!, it) }
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribeFirst({ _, _ ->
// Ignore onNext event
}, ReaderActivity::setInitialChapterError)
}
/**
@ -214,23 +227,23 @@ class ReaderPresenter(
chapter: ReaderChapter
): Observable<ViewerChapters> {
return loader.loadChapter(chapter)
.andThen(Observable.fromCallable {
val chapterPos = chapterList.indexOf(chapter)
.andThen(Observable.fromCallable {
val chapterPos = chapterList.indexOf(chapter)
ViewerChapters(chapter,
chapterList.getOrNull(chapterPos - 1),
chapterList.getOrNull(chapterPos + 1))
})
.observeOn(AndroidSchedulers.mainThread())
.doOnNext { newChapters ->
val oldChapters = viewerChaptersRelay.value
ViewerChapters(chapter,
chapterList.getOrNull(chapterPos - 1),
chapterList.getOrNull(chapterPos + 1))
})
.observeOn(AndroidSchedulers.mainThread())
.doOnNext { newChapters ->
val oldChapters = viewerChaptersRelay.value
// Add new references first to avoid unnecessary recycling
newChapters.ref()
oldChapters?.unref()
// Add new references first to avoid unnecessary recycling
newChapters.ref()
oldChapters?.unref()
viewerChaptersRelay.call(newChapters)
}
viewerChaptersRelay.call(newChapters)
}
}
/**
@ -244,10 +257,10 @@ class ReaderPresenter(
activeChapterSubscription?.unsubscribe()
activeChapterSubscription = getLoadObservable(loader, chapter)
.toCompletable()
.onErrorComplete()
.subscribe()
.also(::add)
.toCompletable()
.onErrorComplete()
.subscribe()
.also(::add)
}
/**
@ -262,13 +275,13 @@ class ReaderPresenter(
activeChapterSubscription?.unsubscribe()
activeChapterSubscription = getLoadObservable(loader, chapter)
.doOnSubscribe { isLoadingAdjacentChapterRelay.call(true) }
.doOnUnsubscribe { isLoadingAdjacentChapterRelay.call(false) }
.subscribeFirst({ view, _ ->
view.moveToPageIndex(0)
}, { _, _ ->
// Ignore onError event, viewers handle that state
})
.doOnSubscribe { isLoadingAdjacentChapterRelay.call(true) }
.doOnUnsubscribe { isLoadingAdjacentChapterRelay.call(false) }
.subscribeFirst({ view, _ ->
view.moveToPageIndex(0)
}, { _, _ ->
// Ignore onError event, viewers handle that state
})
}
/**
@ -285,12 +298,12 @@ class ReaderPresenter(
val loader = loader ?: return
loader.loadChapter(chapter)
.observeOn(AndroidSchedulers.mainThread())
// Update current chapters whenever a chapter is preloaded
.doOnCompleted { viewerChaptersRelay.value?.let(viewerChaptersRelay::call) }
.onErrorComplete()
.subscribe()
.also(::add)
.observeOn(AndroidSchedulers.mainThread())
// Update current chapters whenever a chapter is preloaded
.doOnCompleted { viewerChaptersRelay.value?.let(viewerChaptersRelay::call) }
.onErrorComplete()
.subscribe()
.also(::add)
}
/**
@ -331,9 +344,9 @@ class ReaderPresenter(
*/
private fun saveChapterProgress(chapter: ReaderChapter) {
db.updateChapterProgress(chapter.chapter).asRxCompletable()
.onErrorComplete()
.subscribeOn(Schedulers.io())
.subscribe()
.onErrorComplete()
.subscribeOn(Schedulers.io())
.subscribe()
}
/**
@ -342,9 +355,9 @@ class ReaderPresenter(
private fun saveChapterHistory(chapter: ReaderChapter) {
val history = History.create(chapter.chapter).apply { last_read = Date().time }
db.updateHistoryLastRead(history).asRxCompletable()
.onErrorComplete()
.subscribeOn(Schedulers.io())
.subscribe()
.onErrorComplete()
.subscribeOn(Schedulers.io())
.subscribe()
}
/**
@ -394,18 +407,18 @@ class ReaderPresenter(
db.updateMangaViewer(manga).executeAsBlocking()
Observable.timer(250, TimeUnit.MILLISECONDS, AndroidSchedulers.mainThread())
.subscribeFirst({ view, _ ->
val currChapters = viewerChaptersRelay.value
if (currChapters != null) {
// Save current page
val currChapter = currChapters.currChapter
currChapter.requestedPage = currChapter.chapter.last_page_read
.subscribeFirst({ view, _ ->
val currChapters = viewerChaptersRelay.value
if (currChapters != null) {
// Save current page
val currChapter = currChapters.currChapter
currChapter.requestedPage = currChapter.chapter.last_page_read
// Emit manga and chapters to the new viewer
view.setManga(manga)
view.setChapters(currChapters)
}
})
// Emit manga and chapters to the new viewer
view.setManga(manga)
view.setChapters(currChapters)
}
})
}
/**
@ -446,22 +459,22 @@ class ReaderPresenter(
// Pictures directory.
val destDir = File(Environment.getExternalStorageDirectory().absolutePath +
File.separator + Environment.DIRECTORY_PICTURES +
File.separator + "Tachiyomi")
File.separator + Environment.DIRECTORY_PICTURES +
File.separator + "Tachiyomi")
// Copy file in background.
Observable.fromCallable { saveImage(page, destDir, manga) }
.doOnNext { file ->
DiskUtil.scanMedia(context, file)
notifier.onComplete(file)
}
.doOnError { notifier.onError(it.message) }
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribeFirst(
{ view, file -> view.onSaveImageResult(SaveImageResult.Success(file)) },
{ view, error -> view.onSaveImageResult(SaveImageResult.Error(error)) }
)
.doOnNext { file ->
DiskUtil.scanMedia(context, file)
notifier.onComplete(file)
}
.doOnError { notifier.onError(it.message) }
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribeFirst(
{ view, file -> view.onSaveImageResult(SaveImageResult.Success(file)) },
{ view, error -> view.onSaveImageResult(SaveImageResult.Error(error)) }
)
}
/**
@ -478,14 +491,14 @@ class ReaderPresenter(
val destDir = File(context.cacheDir, "shared_image")
Observable.fromCallable { destDir.delete() } // Keep only the last shared file
.map { saveImage(page, destDir, manga) }
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribeFirst(
{ view, file -> view.onShareImageResult(file) },
{ view, error -> /* Empty */ }
)
Observable.fromCallable { destDir.deleteRecursively() } // Keep only the last shared file
.map { saveImage(page, destDir, manga) }
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribeFirst(
{ view, file -> view.onShareImageResult(file) },
{ view, error -> /* Empty */ }
)
}
/**
@ -497,28 +510,28 @@ class ReaderPresenter(
val stream = page.stream ?: return
Observable
.fromCallable {
if (manga.source == LocalSource.ID) {
val context = Injekt.get<Application>()
LocalSource.updateCover(context, manga, stream())
R.string.cover_updated
SetAsCoverResult.Success
} else {
val thumbUrl = manga.thumbnail_url ?: throw Exception("Image url not found")
if (manga.favorite) {
coverCache.copyToCache(thumbUrl, stream())
.fromCallable {
if (manga.source == LocalSource.ID) {
val context = Injekt.get<Application>()
LocalSource.updateCover(context, manga, stream())
R.string.cover_updated
SetAsCoverResult.Success
} else {
SetAsCoverResult.AddToLibraryFirst
val thumbUrl = manga.thumbnail_url ?: throw Exception("Image url not found")
if (manga.favorite) {
coverCache.copyToCache(thumbUrl, stream())
SetAsCoverResult.Success
} else {
SetAsCoverResult.AddToLibraryFirst
}
}
}
}
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribeFirst(
{ view, result -> view.onSetAsCoverResult(result) },
{ view, _ -> view.onSetAsCoverResult(SetAsCoverResult.Error) }
)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribeFirst(
{ view, result -> view.onSetAsCoverResult(result) },
{ view, _ -> view.onSetAsCoverResult(SetAsCoverResult.Error) }
)
}
/**
@ -559,26 +572,26 @@ class ReaderPresenter(
val trackManager = Injekt.get<TrackManager>()
db.getTracks(manga).asRxSingle()
.flatMapCompletable { trackList ->
Completable.concat(trackList.map { track ->
val service = trackManager.getService(track.sync_id)
if (service != null && service.isLogged && lastChapterRead > track.last_chapter_read) {
track.last_chapter_read = lastChapterRead
.flatMapCompletable { trackList ->
Completable.concat(trackList.map { track ->
val service = trackManager.getService(track.sync_id)
if (service != null && service.isLogged && lastChapterRead > track.last_chapter_read) {
track.last_chapter_read = lastChapterRead
// We wan't these to execute even if the presenter is destroyed and leaks
// for a while. The view can still be garbage collected.
Observable.defer { service.update(track) }
.map { db.insertTrack(track).executeAsBlocking() }
.toCompletable()
.onErrorComplete()
} else {
Completable.complete()
}
})
}
.onErrorComplete()
.subscribeOn(Schedulers.io())
.subscribe()
// We wan't these to execute even if the presenter is destroyed and leaks
// for a while. The view can still be garbage collected.
Observable.defer { service.update(track) }
.map { db.insertTrack(track).executeAsBlocking() }
.toCompletable()
.onErrorComplete()
} else {
Completable.complete()
}
})
}
.onErrorComplete()
.subscribeOn(Schedulers.io())
.subscribe()
}
/**
@ -594,19 +607,19 @@ class ReaderPresenter(
if (removeAfterReadSlots == -1) return
Completable
.fromCallable {
// Position of the read chapter
val position = chapterList.indexOf(chapter)
.fromCallable {
// Position of the read chapter
val position = chapterList.indexOf(chapter)
// Retrieve chapter to delete according to preference
val chapterToDelete = chapterList.getOrNull(position - removeAfterReadSlots)
if (chapterToDelete != null) {
downloadManager.enqueueDeleteChapters(listOf(chapterToDelete.chapter), manga)
// Retrieve chapter to delete according to preference
val chapterToDelete = chapterList.getOrNull(position - removeAfterReadSlots)
if (chapterToDelete != null) {
downloadManager.enqueueDeleteChapters(listOf(chapterToDelete.chapter), manga)
}
}
}
.onErrorComplete()
.subscribeOn(Schedulers.io())
.subscribe()
.onErrorComplete()
.subscribeOn(Schedulers.io())
.subscribe()
}
/**
@ -615,9 +628,9 @@ class ReaderPresenter(
*/
private fun deletePendingChapters() {
Completable.fromCallable { downloadManager.deletePendingChapters() }
.onErrorComplete()
.subscribeOn(Schedulers.io())
.subscribe()
.onErrorComplete()
.subscribeOn(Schedulers.io())
.subscribe()
}
}

View File

@ -62,6 +62,7 @@ class ReaderSettingsSheet(private val activity: ReaderActivity) : BottomSheetDia
show_page_number.bindToPreference(preferences.showPageNumber())
fullscreen.bindToPreference(preferences.fullscreen())
keepscreen.bindToPreference(preferences.keepScreenOn())
long_tap.bindToPreference(preferences.readWithLongTap())
}
/**

View File

@ -116,21 +116,15 @@ class ReaderProgressBar @JvmOverloads constructor(
}
/**
* Called when the aggregated visibility of this view changes. It also starts of stops the
* rotation animation according to [isVisible].
* Called when the visibility of this view changes.
*/
override fun onVisibilityAggregated(isVisible: Boolean) {
super.onVisibilityAggregated(isVisible)
if (isVisible != aggregatedIsVisible) {
aggregatedIsVisible = isVisible
// let's be nice with the UI thread
if (isVisible) {
startAnimation()
} else {
stopAnimation()
}
override fun setVisibility(visibility: Int) {
super.setVisibility(visibility)
val isVisible = visibility == View.VISIBLE
if (isVisible) {
startAnimation()
} else {
stopAnimation()
}
}

View File

@ -25,7 +25,7 @@ open class Pager(
/**
* Long tap listener function to execute when a long tap is detected.
*/
var longTapListener: ((MotionEvent) -> Unit)? = null
var longTapListener: ((MotionEvent) -> Boolean)? = null
/**
* Gesture listener that implements tap and long tap events.
@ -38,8 +38,7 @@ open class Pager(
override fun onLongTapConfirmed(ev: MotionEvent) {
val listener = longTapListener
if (listener != null) {
listener.invoke(ev)
if (listener != null && listener.invoke(ev)) {
performHapticFeedback(HapticFeedbackConstants.LONG_PRESS)
}
}

View File

@ -19,6 +19,9 @@ class PagerConfig(private val viewer: PagerViewer, preferences: PreferencesHelpe
var tappingEnabled = true
private set
var longTapEnabled = true
private set
var volumeKeysEnabled = false
private set
@ -44,6 +47,9 @@ class PagerConfig(private val viewer: PagerViewer, preferences: PreferencesHelpe
preferences.readWithTapping()
.register({ tappingEnabled = it })
preferences.readWithLongTap()
.register({ longTapEnabled = it })
preferences.pageTransitions()
.register({ usePageTransitions = it })

View File

@ -314,7 +314,7 @@ class PagerPageHolder(
when (config.imageZoomType) {
ZoomType.Left -> setScaleAndCenter(scale, PointF(0f, 0f))
ZoomType.Right -> setScaleAndCenter(scale, PointF(sWidth.toFloat(), 0f))
ZoomType.Center -> setScaleAndCenter(scale, center.apply { y = 0f })
ZoomType.Center -> setScaleAndCenter(scale, center.also { it?.y = 0f })
}
onImageDecoded()
}

View File

@ -92,11 +92,15 @@ abstract class PagerViewer(val activity: ReaderActivity) : BaseViewer {
else -> activity.toggleMenu()
}
}
pager.longTapListener = {
val item = adapter.items.getOrNull(pager.currentItem)
if (item is ReaderPage) {
activity.onPageLongTap(item)
pager.longTapListener = f@ {
if (activity.menuVisible || config.longTapEnabled) {
val item = adapter.items.getOrNull(pager.currentItem)
if (item is ReaderPage) {
activity.onPageLongTap(item)
return@f true
}
}
false
}
config.imagePropertyChangedListener = {

View File

@ -19,6 +19,9 @@ class WebtoonConfig(preferences: PreferencesHelper = Injekt.get()) {
var tappingEnabled = true
private set
var longTapEnabled = true
private set
var volumeKeysEnabled = false
private set
@ -35,6 +38,9 @@ class WebtoonConfig(preferences: PreferencesHelper = Injekt.get()) {
preferences.readWithTapping()
.register({ tappingEnabled = it })
preferences.readWithLongTap()
.register({ longTapEnabled = it })
preferences.cropBordersWebtoon()
.register({ imageCropBorders = it }, { imagePropertyChangedListener?.invoke() })

View File

@ -37,7 +37,7 @@ open class WebtoonRecyclerView @JvmOverloads constructor(
private val detector = Detector()
var tapListener: ((MotionEvent) -> Unit)? = null
var longTapListener: ((MotionEvent) -> Unit)? = null
var longTapListener: ((MotionEvent) -> Boolean)? = null
override fun onMeasure(widthSpec: Int, heightSpec: Int) {
halfWidth = MeasureSpec.getSize(widthSpec) / 2
@ -220,8 +220,7 @@ open class WebtoonRecyclerView @JvmOverloads constructor(
override fun onLongTapConfirmed(ev: MotionEvent) {
val listener = longTapListener
if (listener != null) {
listener.invoke(ev)
if (listener != null && listener.invoke(ev)) {
performHapticFeedback(HapticFeedbackConstants.LONG_PRESS)
}
}

View File

@ -95,13 +95,17 @@ class WebtoonViewer(val activity: ReaderActivity) : BaseViewer {
else -> activity.toggleMenu()
}
}
recycler.longTapListener = { event ->
val child = recycler.findChildViewUnder(event.x, event.y)
val position = recycler.getChildAdapterPosition(child)
val item = adapter.items.getOrNull(position)
if (item is ReaderPage) {
activity.onPageLongTap(item)
recycler.longTapListener = f@ { event ->
if (activity.menuVisible || config.longTapEnabled) {
val child = recycler.findChildViewUnder(event.x, event.y)
val position = recycler.getChildAdapterPosition(child)
val item = adapter.items.getOrNull(position)
if (item is ReaderPage) {
activity.onPageLongTap(item)
return@f true
}
}
false
}
frame.layoutParams = ViewGroup.LayoutParams(MATCH_PARENT, MATCH_PARENT)

View File

@ -43,7 +43,7 @@ class SettingsAdvancedController : SettingsController() {
titleRes = R.string.pref_clear_cookies
onClick {
network.cookies.removeAll()
network.cookieManager.removeAll()
activity?.toast(R.string.cookies_cleared)
}
}

View File

@ -29,9 +29,9 @@ class SettingsGeneralController : SettingsController() {
listPreference {
key = Keys.lang
titleRes = R.string.pref_language
entryValues = arrayOf("", "ar", "bg", "bn", "de", "en-US", "en-GB", "es", "fr", "hi",
"hu", "in", "it", "ja", "ko", "lv", "ms", "nl", "pl", "pt", "pt-BR", "ro",
"ru", "tr", "vi")
entryValues = arrayOf("", "ar", "bg", "bn", "ca", "cs", "de", "el", "en-US", "en-GB",
"es", "fr", "hi", "hu", "in", "it", "ja", "ko", "lv", "ms", "nb-rNO", "nl", "pl", "pt",
"pt-BR", "ro", "ru", "sc", "sr", "sv", "th", "tl", "tr", "uk", "vi", "zh-rCN")
entries = entryValues.map { value ->
val locale = LocaleHelper.getLocaleFromString(value.toString())
locale?.getDisplayName(locale)?.capitalize() ?:
@ -52,8 +52,9 @@ class SettingsGeneralController : SettingsController() {
intListPreference {
key = Keys.theme
titleRes = R.string.pref_theme
entriesRes = arrayOf(R.string.light_theme, R.string.dark_theme, R.string.amoled_theme)
entryValues = arrayOf("1", "2", "3")
entriesRes = arrayOf(R.string.light_theme, R.string.dark_theme,
R.string.amoled_theme, R.string.darkblue_theme)
entryValues = arrayOf("1", "2", "3", "4")
defaultValue = "1"
summary = "%s"

View File

@ -1,5 +1,6 @@
package eu.kanade.tachiyomi.ui.setting
import android.os.Build
import android.support.v7.preference.PreferenceScreen
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.preference.PreferenceKeys as Keys
@ -62,6 +63,11 @@ class SettingsReaderController : SettingsController() {
defaultValue = "500"
summary = "%s"
}
switchPreference {
key = Keys.skipRead
titleRes = R.string.pref_skip_read_chapters
defaultValue = false
}
switchPreference {
key = Keys.fullscreen
titleRes = R.string.pref_fullscreen
@ -77,6 +83,13 @@ class SettingsReaderController : SettingsController() {
titleRes = R.string.pref_show_page_number
defaultValue = true
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
switchPreference {
key = Keys.trueColor
titleRes = R.string.pref_true_color
defaultValue = false
}
}
preferenceCategory {
titleRes = R.string.pager_viewer
@ -108,6 +121,11 @@ class SettingsReaderController : SettingsController() {
titleRes = R.string.pref_read_with_tapping
defaultValue = true
}
switchPreference {
key = Keys.readWithLongTap
titleRes = R.string.pref_read_with_long_tap
defaultValue = true
}
switchPreference {
key = Keys.readWithVolumeKeys
titleRes = R.string.pref_read_with_volume_keys

View File

@ -8,6 +8,7 @@ import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.track.TrackManager
import eu.kanade.tachiyomi.data.track.TrackService
import eu.kanade.tachiyomi.data.track.anilist.AnilistApi
import eu.kanade.tachiyomi.data.track.shikomori.ShikomoriApi
import eu.kanade.tachiyomi.util.getResourceColor
import eu.kanade.tachiyomi.widget.preference.LoginPreference
import eu.kanade.tachiyomi.widget.preference.TrackLoginDialog
@ -53,6 +54,15 @@ class SettingsTrackingController : SettingsController(),
dialog.showDialog(router)
}
}
trackPreference(trackManager.shikomori) {
onClick {
val tabsIntent = CustomTabsIntent.Builder()
.setToolbarColor(context.getResourceColor(R.attr.colorPrimary))
.build()
tabsIntent.intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY)
tabsIntent.launchUrl(activity, ShikomoriApi.authUrl())
}
}
}
}
@ -70,6 +80,7 @@ class SettingsTrackingController : SettingsController(),
super.onActivityResumed(activity)
// Manually refresh anilist holder
updatePreference(trackManager.aniList.id)
updatePreference(trackManager.shikomori.id)
}
private fun updatePreference(id: Int) {

View File

@ -0,0 +1,50 @@
package eu.kanade.tachiyomi.ui.setting
import android.content.Intent
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import android.view.Gravity.CENTER
import android.view.ViewGroup.LayoutParams.WRAP_CONTENT
import android.widget.FrameLayout
import android.widget.ProgressBar
import eu.kanade.tachiyomi.data.track.TrackManager
import eu.kanade.tachiyomi.ui.main.MainActivity
import rx.android.schedulers.AndroidSchedulers
import rx.schedulers.Schedulers
import uy.kohesive.injekt.injectLazy
class ShikomoriLoginActivity : AppCompatActivity() {
private val trackManager: TrackManager by injectLazy()
override fun onCreate(savedState: Bundle?) {
super.onCreate(savedState)
val view = ProgressBar(this)
setContentView(view, FrameLayout.LayoutParams(WRAP_CONTENT, WRAP_CONTENT, CENTER))
val code = intent.data?.getQueryParameter("code")
if (code != null) {
trackManager.shikomori.login(code)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe({
returnToSettings()
}, {
returnToSettings()
})
} else {
trackManager.shikomori.logout()
returnToSettings()
}
}
private fun returnToSettings() {
finish()
val intent = Intent(this, MainActivity::class.java)
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP)
startActivity(intent)
}
}

View File

@ -51,7 +51,12 @@ fun syncChaptersWithSource(db: DatabaseHelper,
toAdd.add(sourceChapter)
} else {
//this forces metadata update for the main viewable things in the chapter list
if (source is HttpSource) {
source.prepareNewChapter(sourceChapter, manga)
}
ChapterRecognition.parseChapterNumber(sourceChapter, manga)
if (shouldUpdateDbChapter(dbChapter, sourceChapter)) {
dbChapter.scanlator = sourceChapter.scanlator
dbChapter.name = sourceChapter.name

View File

@ -0,0 +1,83 @@
package eu.kanade.tachiyomi.util
import android.annotation.TargetApi
import android.os.Build
import android.webkit.*
@Suppress("OverridingDeprecatedMember")
abstract class WebViewClientCompat : WebViewClient() {
open fun shouldOverrideUrlCompat(view: WebView, url: String): Boolean {
return false
}
open fun shouldInterceptRequestCompat(view: WebView, url: String): WebResourceResponse? {
return null
}
open fun onReceivedErrorCompat(
view: WebView,
errorCode: Int,
description: String?,
failingUrl: String,
isMainFrame: Boolean) {
}
@TargetApi(Build.VERSION_CODES.N)
final override fun shouldOverrideUrlLoading(
view: WebView,
request: WebResourceRequest
): Boolean {
return shouldOverrideUrlCompat(view, request.url.toString())
}
final override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean {
return shouldOverrideUrlCompat(view, url)
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
final override fun shouldInterceptRequest(
view: WebView,
request: WebResourceRequest
): WebResourceResponse? {
return shouldInterceptRequestCompat(view, request.url.toString())
}
final override fun shouldInterceptRequest(
view: WebView,
url: String
): WebResourceResponse? {
return shouldInterceptRequestCompat(view, url)
}
@TargetApi(Build.VERSION_CODES.M)
final override fun onReceivedError(
view: WebView,
request: WebResourceRequest,
error: WebResourceError
) {
onReceivedErrorCompat(view, error.errorCode, error.description?.toString(),
request.url.toString(), request.isForMainFrame)
}
final override fun onReceivedError(
view: WebView,
errorCode: Int,
description: String?,
failingUrl: String
) {
onReceivedErrorCompat(view, errorCode, description, failingUrl, failingUrl == view.url)
}
@TargetApi(Build.VERSION_CODES.M)
final override fun onReceivedHttpError(
view: WebView,
request: WebResourceRequest,
error: WebResourceResponse
) {
onReceivedErrorCompat(view, error.statusCode, error.reasonPhrase, request.url
.toString(), request.isForMainFrame)
}
}

View File

@ -46,7 +46,6 @@ class TrackLoginDialog(bundle: Bundle? = null) : LoginDialogPreference(bundle) {
login.setText(R.string.unknown_error)
error.message?.let { context.toast(it) }
})
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<WebView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
</WebView>

View File

@ -27,7 +27,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:text="Pull up for more options"
android:text="@string/reader_pull_up_for_more_options"
android:textColor="?android:attr/textColorHint"
app:layout_constraintLeft_toRightOf="@id/general_prefs"
app:layout_constraintTop_toTopOf="@id/general_prefs" />
@ -105,6 +105,17 @@
android:textColor="?android:attr/textColorSecondary"
app:layout_constraintTop_toBottomOf="@id/background_color" />
<android.support.v7.widget.SwitchCompat
android:id="@+id/true_color"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="@string/pref_true_color"
android:textColor="?android:attr/textColorSecondary"
android:visibility="gone"
tools:visibility="visible"
app:layout_constraintTop_toBottomOf="@id/show_page_number" />
<android.support.v7.widget.SwitchCompat
android:id="@+id/fullscreen"
android:layout_width="match_parent"
@ -112,7 +123,7 @@
android:layout_marginTop="16dp"
android:text="@string/pref_fullscreen"
android:textColor="?android:attr/textColorSecondary"
app:layout_constraintTop_toBottomOf="@id/show_page_number" />
app:layout_constraintTop_toBottomOf="@id/true_color" />
<android.support.v7.widget.SwitchCompat
android:id="@+id/keepscreen"
@ -123,11 +134,20 @@
android:textColor="?android:attr/textColorSecondary"
app:layout_constraintTop_toBottomOf="@id/fullscreen" />
<android.support.v7.widget.SwitchCompat
android:id="@+id/long_tap"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="@string/pref_read_with_long_tap"
android:textColor="?android:attr/textColorSecondary"
app:layout_constraintTop_toBottomOf="@id/keepscreen" />
<android.support.v4.widget.Space
android:id="@+id/end_general_preferences"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="@id/keepscreen" />
app:layout_constraintBottom_toBottomOf="@id/long_tap" />
<!-- Pager preferences -->

View File

@ -12,8 +12,12 @@
android:title="@string/action_open_in_browser"
app:showAsAction="never"/>
<item android:id="@+id/action_open_in_web_view"
android:title="@string/action_open_in_web_view"
app:showAsAction="never"/>
<item android:id="@+id/action_add_to_home_screen"
android:title="@string/action_add_to_home_screen"
app:showAsAction="never"/>
</menu>
</menu>

View File

@ -1,5 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<changelog bulletedList="true">
<changelogversion versionName="v0.8.3" changeDate="">
<changelogtext>All the internal sources have been removed. They now need to be
installed as an extension.</changelogtext>
<changelogtext>Cloudflare is now resolved with a WebView in background which should put
an end to the recent updates to adapt to their changes.</changelogtext>
<changelogtext>Added an option to open manga details in a WebView. This
should also help when receiving a captcha confirmation page (usually 403 errors).
It can also be used to login with the website, as the app now shares cookies.</changelogtext>
<changelogtext>Added a deep link handler that extensions can use to perform
a search within the app.</changelogtext>
<changelogtext>Added an option to decode images in ARGB8888 format for
devices running Oreo or later.</changelogtext>
<changelogtext>Added Shikimori tracker.</changelogtext>
<changelogtext>Updated translations.</changelogtext>
</changelogversion>
<changelogversion versionName="v0.8.2" changeDate="">
<changelogtext>Updated Cloudflare.</changelogtext>
<changelogtext>Fixed crashes with some translations.</changelogtext>
</changelogversion>
<changelogversion versionName="v0.8.1" changeDate="">
<changelogtext>Fixed latest Cloudflare changes.</changelogtext>
<changelogtext>Bundled SQLite for better performance and new features.</changelogtext>
<changelogtext>Restored dark blue theme.</changelogtext>
<changelogtext>Added a MAL API workaround.</changelogtext>
<changelogtext>Fixed search issues on Kitsu and AniList.</changelogtext>
<changelogtext>Fixed an issue where the image was centered when using the vertical reader.</changelogtext>
<changelogtext>Updated translations.</changelogtext>
</changelogversion>
<changelogversion versionName="v0.8.0" changeDate="">
<changelogtext>Added a new reader with many fixes.</changelogtext>
<changelogtext>Added GIF support.</changelogtext>
@ -53,106 +84,4 @@
<changelogtext>Bugfixes and minor UI/UX improvements.</changelogtext>
</changelogversion>
<changelogversion versionName="v0.6.8" changeDate="">
<changelogtext>Added a new feature to help migrating manga from sources. You can find it in the library's toolbar.
In the search results, a tap will prompt to replace (or copy) the selected manga, while a long tap will let you
browse the manga before doing the migration.
</changelogtext>
</changelogversion>
<changelogversion versionName="v0.6.7" changeDate="">
<changelogtext>[b]Notice to Batoto users.[/b] As you may already know, Batoto will cease to work in a few days.
We're working on a feature to help migrating the library to other sources and should be available shortly.
Please be patient.</changelogtext>
<changelogtext>Fixed http 503 errors due to Cloudflare changes.</changelogtext>
<changelogtext>Minor UI improvements.</changelogtext>
</changelogversion>
<changelogversion versionName="v0.6.6" changeDate="">
<changelogtext>Backups now properly restore tracking information.</changelogtext>
<changelogtext>Fixed library view and its overflow menu visible in other screens.</changelogtext>
<changelogtext>Fixed updater's notification in Android O.</changelogtext>
<changelogtext>Fixed a crash when rotating the screen in the chapters view.</changelogtext>
<changelogtext>Improved peformance of the app when using a custom downloads directory.</changelogtext>
</changelogversion>
<changelogversion versionName="v0.6.5" changeDate="">
<changelogtext>Added a download cache for faster navigation.</changelogtext>
<changelogtext>Enabled Cloudflare for Batoto.</changelogtext>
<changelogtext>Fixed some issues with automatic backups.</changelogtext>
<changelogtext>Fixed a bootloop issue with devices running Cyanogenmod 12 or 13.</changelogtext>
</changelogversion>
<changelogversion versionName="v0.6.4" changeDate="">
<changelogtext>Added a global search feature with a new catalogue screen.</changelogtext>
<changelogtext>Added an option to show downloaded chapters badges in the library.</changelogtext>
<changelogtext>Added an scrollbar in the chapter list.</changelogtext>
<changelogtext>Fixed some issues with bundled catalogues.</changelogtext>
<changelogtext>Changed the page indicator in the reader to support devices with rounded corners.</changelogtext>
<changelogtext>Crash fixes.</changelogtext>
</changelogversion>
<changelogversion versionName="v0.6.3" changeDate="">
<changelogtext>Fixed a crash when retrying a page.</changelogtext>
<changelogtext>Fixed a crash when sharing an image.</changelogtext>
<changelogtext>Fixed disappearing toolbar buttons in the catalog after a search.</changelogtext>
</changelogversion>
<changelogversion versionName="v0.6.2" changeDate="">
<changelogtext>Added a new completed manga filter for the library.</changelogtext>
<changelogtext>Added scanlator to chapters (if supported by source).</changelogtext>
<changelogtext>Added Discord server link.</changelogtext>
<changelogtext>Added new translations.</changelogtext>
<changelogtext>Extensions shouldn't crash the app anymore.</changelogtext>
<changelogtext>Crop borders is supported in webtoon reader and fixed in Android O.</changelogtext>
<changelogtext>Fixed a bug where storage permissions were always requested.</changelogtext>
<changelogtext>Minor UI and crash fixes.</changelogtext>
</changelogversion>
<changelogversion versionName="v0.6.1" changeDate="">
<changelogtext>Bugfix release.</changelogtext>
</changelogversion>
<changelogversion versionName="v0.6.0" changeDate="">
<changelogtext>Added sorting by total chapters.</changelogtext>
<changelogtext>Added an option to reverse volume keys navigation.</changelogtext>
<changelogtext>Added AMOLED theme.</changelogtext>
<changelogtext>Improved recent chapters view.</changelogtext>
<changelogtext>Improved UI with a single activity approach.</changelogtext>
<changelogtext>Fixed backup restore issues.</changelogtext>
<changelogtext>Fixed Kitsu http 400 errors.</changelogtext>
<changelogtext>Fixed Batoto catalogue.</changelogtext>
</changelogversion>
<changelogversion versionName="v0.5.2" changeDate="">
<changelogtext>New backup system. Smaller file size but requires a network connection to restore.</changelogtext>
<changelogtext>Fixed descriptions showing a single line.</changelogtext>
<changelogtext>Added Nougat shortcuts and round icon.</changelogtext>
<changelogtext>Added an option to add a manga to a specific category.</changelogtext>
<changelogtext>Improved new chapters notification.</changelogtext>
<changelogtext>Support Kitsu new rating system.</changelogtext>
<changelogtext>Last read page is now retained in webtoon reader.</changelogtext>
</changelogversion>
<changelogversion versionName="v0.5.1" changeDate="">
<changelogtext>Added an option to auto download from selected categories.</changelogtext>
<changelogtext>Handle a few more directories for local manga.</changelogtext>
<changelogtext>Update Kissmanga parser.</changelogtext>
<changelogtext>Fixed downloader errors with some manga titles.</changelogtext>
<changelogtext>Fixed gallery not showing saved images.</changelogtext>
</changelogversion>
<changelogversion versionName="v0.5.0" changeDate="">
<changelogtext>Support for local manga. Head to the [a href="https://github.com/inorichi/tachiyomi/wiki/Local-manga"]wiki page[/a] for instructions.</changelogtext>
<changelogtext>Added an option to detect and remove the white borders of the images.</changelogtext>
<changelogtext>Added advanced search for catalogues.</changelogtext>
<changelogtext>Russian, french, bulgarian and vietnamese translations.</changelogtext>
<changelogtext>Fixed a bug when changing chapters inside the reader with the buttons.</changelogtext>
<changelogtext>Fixed certain downloaded chapters not working with any decoder.</changelogtext>
<changelogtext>Fixed lost covers on some devices.</changelogtext>
</changelogversion>
</changelog>

View File

@ -1,4 +1,4 @@
<?xml version='1.0' encoding='UTF-8'?>
<?xml version="1.0" encoding="utf-8"?>
<resources><string name="name">الاسم</string>
<string name="categories">اﻷقسام</string>
<string name="manga">المانجا</string>
@ -7,14 +7,14 @@
<string name="history">السجل</string>
<string name="label_settings">اﻹعدادات</string>
<string name="label_download_queue">التحميلات المنتظرة</string>
<string name="label_download_queue">طابور التنزيل</string>
<string name="label_library">مكتبتي</string>
<string name="label_recent_manga">المقروءة حديثا</string>
<string name="label_catalogues">قائمة المانجا</string>
<string name="label_recent_updates">تحديثات المكتبة</string>
<string name="label_latest_updates">آخر التحديثات</string>
<string name="label_categories">الأقسام</string>
<string name="label_selected">%1$d المحدد</string>
<string name="label_selected">حدّدت: %1$d</string>
<string name="label_backup">النسخ الاحتياطي</string>
<string name="action_settings">اﻹعدادات</string>
@ -350,9 +350,7 @@
<string name="chapter_subtitle">الفصل %1$s</string>
<string name="no_next_chapter">لم يتم العثور على الفصل التالي</string>
<string name="no_previous_chapter">لم يتم العثور على الفصل السابق</string>
<string name="decode_image_error">لا يمكن تحميل الصورة.
\n
\nيمكنك تجربة تغيير إعدادت فك تشفير الصورة عن طريق الخيارات باﻷسفل</string>
<string name="decode_image_error">لا يمكن فكّ تشفير هذه الصورةِ</string>
<string name="confirm_update_manga_sync">تحديث الفصل اﻷخير فى الخدمات المفعلة إلى %1$d؟</string>
<string name="confirm_set_image_as_cover">هل تريد تعيين هذه الصورة كغلاف؟</string>
<string name="viewer_for_this_series">العارض لهذه السلسلة</string>
@ -470,4 +468,14 @@
<string name="information_empty_category">لا توجد لديك أي فئات. اضغط زر اﻹضافة لإنشاء واحد لتنظيم المكتبة الخاصة بك.</string>
</resources>
<string name="darkblue_theme">أزرق غامق</string>
<string name="transition_finished">تمَّ الانتهاء من:</string>
<string name="transition_current">الحالي:</string>
<string name="transition_next">التّالي:</string>
<string name="transition_previous">السّابق:</string>
<string name="transition_no_next">لا يوجدُ فصل تالي</string>
<string name="transition_no_previous">لا يوجدُ فصل سابق</string>
<string name="transition_pages_loading">جار تحميل الصّفحات…</string>
<string name="transition_pages_error">فشل تحميل الصّفحات: %1$s</string>
</resources>

View File

@ -1,11 +1,10 @@
<?xml version='1.0' encoding='UTF-8'?>
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="name">Име</string>
<!-- Activities and fragments labels (toolbar title) -->
<string name="label_settings">Настройки</string>
<string name="label_download_queue">Изтегляния</string>
<string name="label_library">Библиотека</string>
<string name="label_library">Моята библиотека</string>
<string name="label_recent_manga">Наскоро прочетени</string>
<string name="label_catalogues">Каталози</string>
<string name="label_recent_updates">Наскоро обновени</string>
@ -13,26 +12,25 @@
<string name="label_categories">Категории</string>
<string name="label_selected">Избрани: %1$d</string>
<string name="label_backup">Резервно копие</string>
<!-- Actions -->
<string name="action_settings">Настройки</string>
<string name="action_filter">Филтър</string>
<string name="action_filter">Филтрирай</string>
<string name="action_filter_downloaded">Изтеглени</string>
<string name="action_filter_bookmarked">Отбелязани</string>
<string name="action_filter_unread">Непрочетени</string>
<string name="action_filter_read">Прочетени</string>
<string name="action_filter_empty">Премахни филтрирането</string>
<string name="action_sort_alpha">По азбучен ред</string>
<string name="action_sort_last_read">Последно прочетени</string>
<string name="action_sort_last_updated">По обновления</string>
<string name="action_sort_alpha">Азбучен ред</string>
<string name="action_sort_last_read">Последно четене</string>
<string name="action_sort_last_updated">Последно обновление</string>
<string name="action_search">Търсене</string>
<string name="action_select_all">Избери всички</string>
<string name="action_mark_as_read">Отбележи като прочетена</string>
<string name="action_mark_as_unread">Отбележи като непрочетена</string>
<string name="action_mark_previous_as_read">Отбележи предната като прочетена</string>
<string name="action_mark_previous_as_read">Отбележи предните глави като прочетени</string>
<string name="action_download">Изтегли</string>
<string name="action_bookmark">Отметни</string>
<string name="action_remove_bookmark">Премахни отметка</string>
<string name="action_remove_bookmark">Премахни отметката</string>
<string name="action_delete">Изтрий</string>
<string name="action_update">Обнови</string>
<string name="action_update_library">Обнови библиотеката</string>
@ -41,28 +39,28 @@
<string name="action_add_category">Добави категория</string>
<string name="action_edit_categories">Редактирай категории</string>
<string name="action_rename_category">Преименувай категория</string>
<string name="action_move_category">Премести в категория</string>
<string name="action_edit_cover">Промени корицата</string>
<string name="action_move_category">Премести в категории</string>
<string name="action_edit_cover">Смени корицата</string>
<string name="action_sort_up">Сортирай по възходящ ред</string>
<string name="action_sort_down">Сортирай по низходящ ред</string>
<string name="action_show_downloaded">Изтеглени</string>
<string name="action_next_unread">Следваща непрочетена</string>
<string name="action_start">Старт</string>
<string name="action_stop">Стоп</string>
<string name="action_pause">Пауза</string>
<string name="action_start">Започни</string>
<string name="action_stop">Спри</string>
<string name="action_pause">Паузирай</string>
<string name="action_clear">Изчисти</string>
<string name="action_previous_chapter">Предходна глава</string>
<string name="action_previous_chapter">Предишна глава</string>
<string name="action_next_chapter">Следваща глава</string>
<string name="action_retry">Опитай пак</string>
<string name="action_remove">Премахни</string>
<string name="action_resume">Продължи</string>
<string name="action_open_in_browser">Отвори в браузър</string>
<string name="action_add_to_home_screen">Пряк път на начален екран</string>
<string name="action_display_mode">Начин на показване</string>
<string name="action_add_to_home_screen">Добави към началния си екран</string>
<string name="action_display_mode">Промяна на режима на показване</string>
<string name="action_display">Показване</string>
<string name="action_display_grid">Таблица</string>
<string name="action_display_list">Лист</string>
<string name="action_set_filter">Филтрирай</string>
<string name="action_display_grid">Решетка</string>
<string name="action_display_list">Списък</string>
<string name="action_set_filter">Сложи филтър</string>
<string name="action_cancel">Отмени</string>
<string name="action_sort">Сортирай</string>
<string name="action_install">Инсталирай</string>
@ -70,13 +68,11 @@
<string name="action_save">Запази</string>
<string name="action_reset">Изчисти</string>
<string name="action_undo">Върни</string>
<!-- Operations -->
<string name="deleting">Изтриване…</string>
<string name="deleting">Изтриване </string>
<string name="loading">Зареждане…</string>
<!-- Preferences -->
<!-- Subsections -->
<!-- Subsections -->
<string name="pref_category_general">Основни настройки</string>
<string name="pref_category_reader">Четец</string>
<string name="pref_category_downloads">Изтегляния</string>
@ -84,8 +80,7 @@
<string name="pref_category_tracking">Следене</string>
<string name="pref_category_advanced">Разширени настройки</string>
<string name="pref_category_about">За приложението</string>
<!-- General section -->
<!-- General section -->
<string name="pref_library_columns">Манга на ред</string>
<string name="portrait">Портретно</string>
<string name="landscape">Пейзажно</string>
@ -97,24 +92,24 @@
<string name="update_3hour">На всеки 3 часа</string>
<string name="update_6hour">На всеки 6 часа</string>
<string name="update_12hour">На всеки 12 часа</string>
<string name="update_24hour">Всекидневно</string>
<string name="update_48hour">На всеки 2 дена</string>
<string name="pref_library_update_categories">Категории, включени в глобалното обновяване</string>
<string name="update_24hour">Ежедневно</string>
<string name="update_48hour">На всеки 2 дни</string>
<string name="pref_library_update_categories">Категории за включване в
\nглобално обновяване</string>
<string name="all">Всички</string>
<string name="pref_library_update_restriction">Ограничения при обновяване</string>
<string name="pref_library_update_restriction_summary">Обновявай само когато дадените условия са спазени</string>
<string name="wifi">Wi-Fi</string>
<string name="charging">На зарядно устройство</string>
<string name="pref_update_only_non_completed">Обновявай само текуща манга</string>
<string name="pref_update_only_non_completed">Обновявай само излизаща манга</string>
<string name="pref_auto_update_manga_sync">Синхронизирай глави след прочитане</string>
<string name="pref_theme">Тема на приложението</string>
<string name="light_theme">Основна тема</string>
<string name="light_theme">Главна тема</string>
<string name="dark_theme">Тъмна тема</string>
<string name="pref_start_screen">Начален екран</string>
<string name="pref_language">Език</string>
<string name="system_default">По подразбиране</string>
<!-- Reader section -->
<!-- Reader section -->
<string name="pref_fullscreen">Цял екран</string>
<string name="pref_lock_orientation">Заключи ориентацията</string>
<string name="pref_page_transitions">Преходи</string>
@ -156,9 +151,7 @@
<string name="color_filter_g_value">G</string>
<string name="color_filter_b_value">B</string>
<string name="color_filter_a_value">A</string>
<!-- Downloads section -->
<!-- Downloads section -->
<string name="pref_download_directory">Директория на изтеглянията</string>
<string name="pref_download_only_over_wifi">Тегли само с Wi-Fi</string>
<string name="pref_remove_after_marked_as_read">Изтрий, щом маркирам като прочетено</string>
@ -171,11 +164,9 @@
<string name="fourth_to_last">Четвърта последно прочетена глава</string>
<string name="fifth_to_last">Пета последно прочетена глава</string>
<string name="pref_download_new">Изтегляй нови глави</string>
<!-- Sync section -->
<!-- Sync section -->
<string name="services">Услуги</string>
<!-- Advanced section -->
<!-- Advanced section -->
<string name="pref_clear_chapter_cache">Изчисти кеша на главите</string>
<string name="used_cache">Използвани: %1$s</string>
<string name="cache_deleted">Кеш изчистен. %1$d файла бяха изчистени</string>
@ -184,22 +175,19 @@
<string name="cookies_cleared">Бисквитки изчистени</string>
<string name="choices_reset">Рестартирай диалогичните избори</string>
<string name="pref_clear_database">Изчисти базата данни</string>
<string name="pref_clear_database_summary">Изтрий манга и глави, които не се намират в библиотеката ми</string>
<string name="clear_database_confirmation">Сигурни ли сте? Прочетените глави и напредъкът на мангата, която не се намира в библиотеката Ви, ще бъдат изгубени</string>
<string name="pref_clear_database_summary">Изтрий манга и глави, които не са в библиотеката ми</string>
<string name="clear_database_confirmation">Сигурни ли сте\? Прочетените глави и напредъкът на манги, които не са в библиотеката Ви, ще бъдат изгубени</string>
<string name="clear_database_completed">Базата данни изчистена</string>
<string name="pref_refresh_library_metadata">Обнови метаданните на библиотеката</string>
<string name="pref_refresh_library_metadata_summary">Обновява кориците, жанровете, описанието и статуса на мангите</string>
<!-- About section -->
<!-- About section -->
<string name="version">Версия</string>
<string name="build_time">Време на създаване</string>
<string name="pref_enable_automatic_updates">Провери за актуализации</string>
<string name="pref_enable_automatic_updates_summary">Автоматично проверявай за актуализации</string>
<!-- ACRA -->
<string name="pref_enable_acra">Изпращай данни за грешки</string>
<string name="pref_acra_summary">Помага за изправянето на бъгове. Лични данни няма да бъдат изпратени</string>
<string name="pref_acra_summary">Помага за оправянето на бъгове. Няма да се изпращат лични данни</string>
<!-- Login dialog -->
<string name="login_title">Влизане в %1$s</string>
<string name="username">Потребителско име</string>
@ -209,21 +197,17 @@
<string name="login_success">Влизане успешно</string>
<string name="invalid_login">Получи се грешка при влизане</string>
<string name="unknown_error">Неизвестна грешка</string>
<!-- Library fragment -->
<string name="library_search_hint">Заглавие или автор…</string>
<string name="updating_category">Обновяване на категорията</string>
<string name="confirm_delete_manga">Сигурни ли сте, че желаете да премахнете избраната манга?</string>
<!-- Catalogue fragment -->
<string name="source_requires_login">Източникът изисква от вас да въведете име и парола</string>
<string name="select_source">Изберете източник</string>
<string name="no_valid_sources">Моля, изберете поне един валиден източник</string>
<string name="no_more_results">Няма повече резултати</string>
<!-- Manga activity -->
<string name="manga_not_in_db">Тази манга беше премахната от базата данни!</string>
<!-- Manga info fragment -->
<string name="manga_detail_tab">Инфо</string>
<string name="description">Описание</string>
@ -244,7 +228,6 @@
<string name="shortcut_title">Име на пряк път</string>
<string name="icon_shape">Форма на икона</string>
<string name="icon_creation_fail">Пряк път не можа да бъде създаден!</string>
<!-- Manga chapters fragment -->
<string name="manga_chapters_tab">Глави</string>
<string name="manga_chapter_no_title">Неозаглавена</string>
@ -267,35 +250,29 @@
<string name="download_all">Изтегли всички глави</string>
<string name="download_unread">Изтегли непрочетени глави</string>
<string name="confirm_delete_chapters">Сигурни ли сте, че искате да изтриете избраните глави?</string>
<!-- MyAnimeList fragment -->
<string name="manga_tracking_tab">Следене</string>
<string name="reading">В прочит</string>
<string name="completed">Завършена</string>
<string name="dropped">Изоставена</string>
<string name="on_hold">На заден план</string>
<string name="plan_to_read">Планирам да чета</string>
<string name="plan_to_read">За четене</string>
<string name="score">Оценка</string>
<string name="title">Заглавие</string>
<string name="status">Статус</string>
<string name="chapters">Глави</string>
<!-- Category activity -->
<string name="error_category_exists">Категория със същото име вече съществува!</string>
<string name="snack_categories_deleted">Категориите бяха изтрити</string>
<!-- Dialog option with checkbox view -->
<string name="dialog_with_checkbox_remove_description">Това ще премахне датата на прочитане на главата. Сигурни ли сте?</string>
<string name="dialog_with_checkbox_reset">Рестартирай всички глави за тази манга</string>
<!-- SnackBar -->
<string name="snack_add_to_library">Да добавя ли мангата към библиотеката?</string>
<string name="snack_add_to_library">Добавяне на мангата към библиотеката\?</string>
<!-- Image notifier -->
<string name="picture_saved">Изображението запазено</string>
<string name="saving_picture">Запазване на изображението</string>
<string name="options">Опции</string>
<!-- Reader activity -->
<string name="custom_filter">Персонализиран филтър</string>
<string name="set_as_cover">Постави за корица</string>
@ -306,37 +283,30 @@
<string name="chapter_progress">Страница: %1$d</string>
<string name="chapter_subtitle">Глава %1$s</string>
<string name="no_next_chapter">Не беше намерена следваща глава</string>
<string name="no_previous_chapter">Не беше намерена предходна глава</string>
<string name="decode_image_error">Изображението не можа да бъде заредено.
Опитайте да смените декодера на изображението или някоя от изброените опции</string>
<string name="no_previous_chapter">Не беше намерена предишна глава</string>
<string name="decode_image_error">Неуспешно декодиране на изображението</string>
<string name="confirm_update_manga_sync">Обнови последната прочетена глава в %1$d?</string>
<string name="confirm_set_image_as_cover">Желаете ли да използвате това изображение за корица?</string>
<string name="viewer_for_this_series">Посока на четене за поредицата</string>
<string name="viewer_for_this_series">зрител за тази серия</string>
<!-- Backup fragment -->
<string name="backup">Резервно копие</string>
<!-- Recent manga fragment -->
<string name="recent_manga_source">%1$s - Гл.%2$s</string>
<string name="recent_manga_source">%1$s - Глава %2$s</string>
<!-- Downloads activity and service -->
<string name="download_queue_error">Получи се грешка при изтеглянето на главите. Може да опитате пак в секцията на изтеглянията</string>
<!-- Library update service notifications -->
<string name="notification_update_progress">Напредък на обновяването: %1$d/%2$d</string>
<string name="notification_new_chapters">Открити нови глави</string>
<string name="notification_new_chapters">Нови глави са намерени</string>
<string name="notification_cover_update_failed">Грешка при обновяването на корицата</string>
<string name="notification_first_add_to_library">Моля, добавете мангата в библиотеката си, преди да направите това</string>
<string name="notification_not_connected_to_ac_title">Синхронизиране отменено</string>
<string name="notification_not_connected_to_ac_body">Няма връзка към зарядно устройство</string>
<string name="notification_no_connection_title">Синхронизиране отменено</string>
<string name="notification_no_connection_body">Няма налична връзка</string>
<!-- File Picker Titles -->
<string name="file_select_cover">Изберете корица</string>
<string name="file_select_backup">Изберете резервно копие</string>
<string name="file_select_icon">Изберете икона за пряк път</string>
<!--UpdateCheck-->
<string name="update_check_title">Достъпна е нова актуализация!</string>
<string name="update_check_confirm">Изтегли</string>
@ -344,24 +314,20 @@
<string name="update_check_no_new_updates">Няма налични актуализации</string>
<string name="update_check_download_started">Изтеглянето започна</string>
<string name="update_check_look_for_updates">Търсене на актуализации</string>
<!--UpdateCheck Notifications-->
<string name="update_check_notification_file_download">Изтегли актуализацията</string>
<string name="update_check_notification_download_in_progress">Изтегля се</string>
<string name="update_check_notification_download_complete">Изтегляне завършено</string>
<string name="update_check_notification_download_error">Грешка при изтегляне</string>
<string name="update_check_notification_update_available">Налична актуализация</string>
<!--Content Description-->
<string name="description_backdrop">Фон на мангата</string>
<string name="description_cover">Корица</string>
<!-- Information Text -->
<string name="information_no_downloads">Нямате изтегляния</string>
<string name="information_no_recent">Нямате скорошни глави</string>
<string name="information_no_recent_manga">Няматe наскоро прочетена манга</string>
<string name="information_empty_library">Библиотеката Ви е празна, можете да я напълните от менюто Каталози.</string>
<!-- Download Notification -->
<string name="download_notifier_downloader_title">Изтегли</string>
<string name="download_notifier_title_error">Грешка</string>
@ -370,37 +336,31 @@
<string name="download_notifier_page_ready_error">Страницата не е заредена</string>
<string name="download_notifier_text_only_wifi">Няма налична Wi-Fi връзка</string>
<string name="download_notifier_no_network">Няма налична интернет връзка</string>
<string name="categories">Категории</string>
<string name="categories">Категории</string>
<string name="manga">Манга</string>
<string name="track">Следене</string>
<string name="history">История</string>
<string name="action_sort_total">Общо глави</string>
<string name="action_sort_total">Общ брой глави</string>
<string name="action_close">Затвори</string>
<string name="action_move">Премести</string>
<string name="action_export">Експорт</string>
<string name="action_export">Експортирай</string>
<string name="action_open_log">Отвори лога</string>
<string name="action_create">Създай</string>
<string name="action_restore">Възстанови</string>
<string name="app_not_available">Приложението не е достъпно</string>
<string name="short_recent_updates">Обновления</string>
<string name="update_weekly">Ежеседмично</string>
<string name="update_monthly">Ежемесечно</string>
<string name="amoled_theme">AMOLED тема</string>
<string name="default_category">Категория по подразбиране</string>
<string name="default_category_summary">Питай всеки път</string>
<string name="pref_crop_borders">Изрязвай границите</string>
<string name="pref_crop_borders">Изрязвай границите</string>
<string name="pref_read_with_volume_keys_inverted">Обърнати бутони за звука</string>
<string name="pref_download_new_categories">Категории, включени в изтеглянето</string>
<string name="pref_create_backup">Създай резервно копие</string>
<string name="pref_download_new_categories">Категории за включване при теглене</string>
<string name="pref_create_backup">Създай резервно копие</string>
<string name="pref_create_backup_summ">Може да се използва за възстановяване на текущата библиотека</string>
<string name="pref_restore_backup">Възстанови резервно копие</string>
<string name="pref_restore_backup_summ">Възстанови предишна библиотека от резервно копие</string>
<string name="pref_restore_backup_summ">Възстанови библиотеката от резервно копие</string>
<string name="pref_backup_directory">Директория за резервното копие</string>
<string name="pref_backup_service_category">Обслужване</string>
<string name="pref_backup_interval">Честота на запазване</string>
@ -419,48 +379,37 @@
<string name="backup_choice">Какво искате да запазите?</string>
<string name="restoring_backup">Възстановяване на копие</string>
<string name="creating_backup">Създаване на резервно копие</string>
<string name="pref_refresh_library_tracking">Обнови метаданните на проследяването</string>
<string name="pref_refresh_library_tracking">Обнови метаданните на проследяването</string>
<string name="pref_refresh_library_tracking_summary">Обновява статус, оценка и последно прочетена глава от услугите за проследяване</string>
<string name="also_delete_chapters">Също изтрий изтеглените глави</string>
<string name="also_delete_chapters">Също изтрий изтеглените глави</string>
<string name="local_source">Локална манга</string>
<string name="invalid_combination">\"По подразбиране\" не може да се избира с други категории</string>
<string name="added_to_library">Мангата беше добавена към библиотеката Ви</string>
<string name="manga_info_last_chapter_label">Последна глава</string>
<string name="delete_downloads_for_manga">Да се изтрият ли изтеглените глави?</string>
<string name="chapter_paused">На пауза</string>
<string name="notification_new_chapters_text">За %1$d заглавия</string>
<string name="download_notifier_download_paused">Изтеглянето спряно</string>
<string name="backup_restore_content">За възстановяването се изтеглят данни от източника, за които може да бъде отчетен разход на данни.
<string name="backup_restore_content">За възстановяването се изтеглят данни от източника, за които може да бъде отчетен разход на данни.
\nСъщо проверете дали сте влезли коректно в източниците, които го изискват, преди възстановяването.</string>
<string name="action_global_search">Глобално търсене</string>
<string name="action_open">Отвори</string>
<string name="action_login">Влизане</string>
<string name="action_login">Вход</string>
<string name="other_source">Други</string>
<string name="action_global_search_hint">Глобално търсене…</string>
<string name="no_results">Не бяха открити резултати!</string>
<string name="latest">Последни</string>
<string name="browse">Търсене</string>
<string name="shortcut_created">Прекият път беше добавен към началния екран.</string>
<string name="channel_common">Общи</string>
<string name="channel_library">Библиотека</string>
<string name="channel_downloader">Изтегляния</string>
<string name="action_display_download_badge">Показвай изтеглени глави</string>
<string name="action_display_download_badge">Изтегляне на значки</string>
<string name="local_source_badge">Локална</string>
<string name="information_empty_category">Нямате категории. Натиснете плюса, за да ги създадете и да организирате библиотеката си.</string>
<string name="information_empty_category">Нямате категории. Натиснете плюса, за да създадете такава и да организирате библиотеката си.</string>
<string name="label_migration">Смяна на източник</string>
<string name="label_extensions">Разширения</string>
<string name="label_extensions">Добавки</string>
<string name="label_extension_info">Информация</string>
<string name="all_lang">Всички</string>
<string name="ext_details">Подробности</string>
<string name="ext_update">Обнови</string>
@ -483,8 +432,7 @@
<string name="ext_version_info">Версия: %1$s</string>
<string name="ext_language_info">Език: %1$s</string>
<string name="ext_empty_preferences">Няма предпочитания за това разширение</string>
<string name="pref_double_tap_anim_speed">Скорост на анимацията</string>
<string name="pref_double_tap_anim_speed">Скорост на анимацията</string>
<string name="double_tap_anim_speed_0">Без анимация</string>
<string name="double_tap_anim_speed_normal">Нормална</string>
<string name="double_tap_anim_speed_fast">Бързо</string>
@ -494,7 +442,6 @@
<string name="manga_removed_library">Премахната от библиотеката</string>
<string name="manga_info_latest_data_label">Обновена</string>
<string name="copied_to_clipboard">%1$s копирано към клипборда</string>
<string name="custom_download">Изтегли определен брой</string>
<string name="custom_hint">брой</string>
<string name="download_custom">Изтегли определен брой</string>
@ -504,5 +451,23 @@
<string name="migrate">Мигрирай</string>
<string name="copy">Копирай</string>
<string name="migrating">Мигриране…</string>
</resources>
<string name="pager_viewer">пейджър</string>
<string name="source_not_installed">Източникът не е инсталиран: %1$s</string>
<string name="repeating">Препрочитане</string>
<string name="track_status">Статус</string>
<string name="track_start_date">Започната на</string>
<string name="track_type">Тип</string>
<string name="track_author">Автор</string>
<string name="url_not_set">Мангата няма връзка с акаунта, молим отново да натиснете заглавието и да изберете мангата</string>
<string name="transition_finished">Завършени:</string>
<string name="transition_current">Текущи:</string>
<string name="transition_next">Следва:</string>
<string name="transition_previous">Предишна:</string>
<string name="transition_no_next">Няма повече глави</string>
<string name="transition_no_previous">Няма предишна глава</string>
<string name="transition_pages_loading">Зареждане на страниците…</string>
<string name="transition_pages_error">"Неуспешно зареждане на страници: %1$s "</string>
<string name="darkblue_theme">Тъмно син</string>
<string name="pref_read_with_long_tap">Показване на прозорец след натискане</string>
<string name="reader_pull_up_for_more_options">Издърпайте за допълнително опции</string>
</resources>

View File

@ -1,4 +1,4 @@
<?xml version='1.0' encoding='UTF-8'?>
<?xml version="1.0" encoding="utf-8"?>
<resources><string name="name">নাম</string>
<string name="categories">ধরণ</string>
<string name="manga">মাংগা</string>
@ -350,8 +350,7 @@
<string name="chapter_subtitle">অধ্যায় %1$s</string>
<string name="no_next_chapter">পরবর্তী অধ্যায় খুঁজে পাওয়া যায়নি</string>
<string name="no_previous_chapter">আগের অধ্যায় খুঁজে পাওয়া যায়নি</string>
<string name="decode_image_error">ছবি লোড করা সম্ভব হয়নি।
\nছবি ডিকোডার পরিবর্তন করুন অথবা নিচের যেকোন একটি অপশন চেষ্টা করুন</string>
<string name="decode_image_error">ছবি decoded করা যাবে না</string>
<string name="confirm_update_manga_sync">শেষ পড়া অধ্যায় সেবাগুলোতে আপডেট করুন %1$d?</string>
<string name="confirm_set_image_as_cover">আপনি কি এই ছবিটিকে কভার হিসেবে সেট করতে চান?</string>
<string name="viewer_for_this_series">এই সিরিজের দর্শক</string>
@ -457,4 +456,22 @@
<string name="copy">কপি</string>
<string name="migrating">সরানো হচ্ছে…</string>
</resources>
<string name="pager_viewer">পেজার</string>
<string name="source_not_installed">উৎস ইন্সটল করা নেই: %1$s</string>
<string name="repeating">পুনরায় পড়া</string>
<string name="track_status">স্ট্যাটাস</string>
<string name="track_start_date">শুরু হয়েছে</string>
<string name="track_type">ধরণ</string>
<string name="track_author">লেখক</string>
<string name="darkblue_theme">গাঢ় নীল</string>
<string name="transition_finished">"শেষ :"</string>
<string name="transition_current">"এখনকার :"</string>
<string name="transition_next">আসছে :</string>
<string name="transition_previous">পূর্ববর্তী :</string>
<string name="transition_no_next">কোন পরের অধ্যায় আছে</string>
<string name="transition_no_previous">কোন পূর্ববর্তী অধ্যায় আছে</string>
<string name="transition_pages_loading">পৃষ্ঠা লোড হচ্ছে …</string>
<string name="transition_pages_error">পৃষ্ঠা লোড করতে ব্যর্থ হয়েছে: %1$s</string>
<string name="url_not_set">মাংগা ইউআরএল সেট না শিরোনাম ক্লিক করুন এবং আবার মাংগা নির্বাচন করুন</string>
</resources>

View File

@ -0,0 +1,204 @@
<?xml version="1.0" encoding="utf-8"?>
<resources><string name="name">Nom</string>
<string name="categories">Categories</string>
<string name="manga">Manga</string>
<string name="chapters">Capítols</string>
<string name="track">Seguiment</string>
<string name="history">Historial</string>
<string name="label_settings">Configuració</string>
<string name="label_download_queue">Cua de descàrregues</string>
<string name="label_library">La meva biblioteca</string>
<string name="label_recent_manga">Llegit recentment</string>
<string name="label_catalogues">Catàlegs</string>
<string name="label_recent_updates">Actualitzacions de biblioteca</string>
<string name="label_latest_updates">Últimes actualitzacions</string>
<string name="label_categories">Categories</string>
<string name="label_selected">Seleccionats: %1$d</string>
<string name="label_backup">Còpia de seguretat</string>
<string name="label_migration">Font de migració</string>
<string name="label_extensions">Extensions</string>
<string name="label_extension_info">Informació d\'extensió</string>
<string name="action_settings">Configuració</string>
<string name="action_filter">Filtrar</string>
<string name="action_filter_downloaded">Descarregat</string>
<string name="action_filter_bookmarked">Marcat</string>
<string name="action_filter_unread">No llegit</string>
<string name="action_filter_read">Llegit</string>
<string name="action_filter_empty">Eliminar filtres</string>
<string name="action_sort_alpha">Alfabèticament</string>
<string name="action_sort_total">Número de capítols</string>
<string name="action_sort_last_read">Últim llegit</string>
<string name="action_sort_last_updated">Última actualització</string>
<string name="action_search">Buscar</string>
<string name="action_global_search">Cerca global</string>
<string name="action_select_all">Seleccionar-ho tot</string>
<string name="action_mark_as_read">Marcar com llegit</string>
<string name="action_mark_as_unread">Marcar com no llegit</string>
<string name="action_mark_previous_as_read">Marcar anterior com llegits</string>
<string name="action_download">Descarregar</string>
<string name="action_bookmark">Marcar</string>
<string name="action_remove_bookmark">Desmarcar</string>
<string name="action_delete">Eliminar</string>
<string name="action_update">Actualitzar</string>
<string name="action_update_library">Actualitzar biblioteca</string>
<string name="action_edit">Editar</string>
<string name="action_add">Afegir</string>
<string name="action_add_category">Afegir categoria</string>
<string name="action_edit_categories">Editar categories</string>
<string name="action_rename_category">Renombrar categoria</string>
<string name="action_move_category">Moure a categories</string>
<string name="action_edit_cover">Editar la imatge de la portada</string>
<string name="action_sort_up">"Ordenar ascendent "</string>
<string name="action_sort_down">Ordenar descendent</string>
<string name="action_show_downloaded">Descarregat</string>
<string name="action_next_unread">Pròxim sense llegir</string>
<string name="action_start">Començar</string>
<string name="action_stop">Parar</string>
<string name="action_pause">Pausa</string>
<string name="action_clear">Borrar</string>
<string name="action_close">Tancar</string>
<string name="action_previous_chapter">Capítol anterior</string>
<string name="action_next_chapter">Següent capítol</string>
<string name="action_retry">Reintentar</string>
<string name="action_remove">Eliminar</string>
<string name="action_resume">Continuar</string>
<string name="action_move">Moure</string>
<string name="action_open_in_browser">Obrir en el navegador</string>
<string name="action_add_to_home_screen">Afegir a la pantalla d\'inici</string>
<string name="action_display_mode">Canviar el mode de visualització</string>
<string name="action_display">Mostrar</string>
<string name="action_display_grid">Quadrícula</string>
<string name="action_display_list">Llista</string>
<string name="action_display_download_badge">Icona de descàrregues</string>
<string name="action_set_filter">Establir filtre</string>
<string name="action_cancel">Cancel·lar</string>
<string name="action_sort">Ordenar</string>
<string name="action_install">Instal·lar</string>
<string name="action_share">Compartir</string>
<string name="action_save">Guardar</string>
<string name="action_reset">Reiniciar</string>
<string name="action_undo">Desfer</string>
<string name="action_export">Exportar</string>
<string name="action_open_log">Obrir registre</string>
<string name="action_create">Crear</string>
<string name="action_restore">Restablir</string>
<string name="action_open">Obrir</string>
<string name="action_login">Iniciar sessió</string>
<string name="deleting">Eliminant…</string>
<string name="loading">Carregant…</string>
<string name="app_not_available">Aplicació no disponible</string>
<string name="short_recent_updates">Actualitzacions</string>
<string name="pref_category_general">General</string>
<string name="pref_category_reader">Lector</string>
<string name="pref_category_downloads">Descàrregues</string>
<string name="pref_category_sources">Origens</string>
<string name="pref_category_tracking">Seguiment</string>
<string name="pref_category_advanced">Avançat</string>
<string name="pref_category_about">Sobre el</string>
<string name="pref_library_columns">Mangas per fila</string>
<string name="portrait">Vertical</string>
<string name="landscape">Horitzontal</string>
<string name="default_columns">Per defecte</string>
<string name="pref_library_update_interval">Freqüència d\'actualització de la biblioteca</string>
<string name="update_never">Manual</string>
<string name="update_1hour">Cada hora</string>
<string name="update_2hour">Cada 2 hores</string>
<string name="update_3hour">Cada 3 hores</string>
<string name="update_6hour">Cada 6 hores</string>
<string name="update_12hour">Cada 12 hores</string>
<string name="update_24hour">Diàriament</string>
<string name="update_48hour">Cada 2 dies</string>
<string name="update_weekly">Cada setmana</string>
<string name="update_monthly">Mensual</string>
<string name="pref_library_update_categories">Categories per incloure en l\'actualització global</string>
<string name="all">Tot</string>
<string name="pref_library_update_restriction">Restriccions d\'actualització de la biblioteca</string>
<string name="pref_library_update_restriction_summary">Actualitzar només quan es compleixen les condicions</string>
<string name="wifi">Wi-Fi</string>
<string name="charging">Carregant</string>
<string name="pref_update_only_non_completed">Només actualitzar el manga en curs</string>
<string name="pref_auto_update_manga_sync">Sincronitzar capítols després de llegir-los</string>
<string name="pref_theme">Tema de l\'aplicació</string>
<string name="light_theme">Tema principal</string>
<string name="dark_theme">Tema fosc</string>
<string name="amoled_theme">Tema AMOLED</string>
<string name="darkblue_theme">Blau fosc</string>
<string name="pref_start_screen">Pantalla d\'inici</string>
<string name="pref_language">Idioma</string>
<string name="system_default">Per defecte del sistema</string>
<string name="default_category">Categoria per defecte</string>
<string name="default_category_summary">Preguntar sempre</string>
<string name="all_lang">Tot</string>
<string name="ext_details">Detalls</string>
<string name="ext_update">Actualitzar</string>
<string name="ext_install">Instal·lar</string>
<string name="ext_pending">Pendent</string>
<string name="ext_downloading">S\'està baixant</string>
<string name="ext_installing">S\'està instal·lant</string>
<string name="ext_installed">Instal·lat</string>
<string name="ext_trust">Confiança</string>
<string name="ext_untrusted">No és de confiança</string>
<string name="ext_uninstall">Desinstal·lar</string>
<string name="ext_preferences">Preferències</string>
<string name="ext_available">Disponible</string>
<string name="untrusted_extension">Extensió no confiable</string>
<string name="untrusted_extension_message">Aquesta extensió s\'ha firmat amb un certificat que no és de confiança i no s\'ha activat.
\n
\nUna extensió maliciosa podria llegir qualsevol credencial guardada en Tachiyomi o executar codi maliciós.
\n
\nSi acceptes aquest certificat estàs acceptant els riscos que comporta.</string>
<string name="ext_version_info">Versió: %1$s</string>
<string name="ext_language_info">Idioma: %1$s</string>
<string name="ext_empty_preferences">No hi han preferències per editar en aquesta extensió</string>
<string name="pref_fullscreen">Pantalla completa</string>
<string name="pref_lock_orientation">Bloquejar l\'orientació</string>
<string name="pref_page_transitions">Transicions de pàgina</string>
<string name="pref_show_page_number">Mostra el número de pàgina</string>
<string name="pref_crop_borders">Retallar les vores</string>
<string name="pref_custom_brightness">Fer servir lluminositat personalitzada</string>
<string name="pref_custom_color_filter">Fer servir filtre de color personalitzat</string>
<string name="pref_keep_screen_on">Romandre amb la pantalla encesa</string>
<string name="pref_reader_navigation">Navegació</string>
<string name="pref_read_with_volume_keys">Tecles de volum</string>
<string name="pref_read_with_volume_keys_inverted">Invertir tecles de volum</string>
<string name="pref_read_with_tapping">Pitjar pantalla</string>
<string name="pref_reader_theme">Color de fons</string>
<string name="white_background">Blanc</string>
<string name="black_background">Negre</string>
<string name="pref_viewer_type">Lector per defecte</string>
<string name="default_viewer">Per defecte</string>
<string name="left_to_right_viewer">D\'esquerra a dreta</string>
<string name="right_to_left_viewer">De dreta a esquerra</string>
<string name="vertical_viewer">Vertical</string>
<string name="webtoon_viewer">Webtoons</string>
<string name="pager_viewer">Paginat</string>
<string name="pref_image_decoder">Descodificador d\'imatge</string>
<string name="pref_image_scale_type">Tipus d\'escalat</string>
<string name="scale_type_fit_screen">Ajust de pantalla</string>
<string name="scale_type_stretch">Estirat</string>
<string name="scale_type_fit_width">Ajust d\'amplada</string>
<string name="scale_type_fit_height">Ajust d\'altura</string>
<string name="scale_type_original_size">Mida Original</string>
<string name="scale_type_smart_fit">Ajust intel·ligent</string>
<string name="pref_zoom_start">Posició d\'inici del zoom</string>
<string name="zoom_start_automatic">Automàtic</string>
<string name="zoom_start_left">Esquerra</string>
<string name="zoom_start_right">Dreta</string>
<string name="zoom_start_center">Centre</string>
<string name="double_tap_anim_speed_0">Sense animació</string>
<string name="double_tap_anim_speed_normal">Normal</string>
<string name="double_tap_anim_speed_fast">Ràpid</string>
<string name="pref_rotation_type">Rotació</string>
<string name="rotation_free">Lliure</string>
<string name="rotation_lock">Bloca</string>
<string name="rotation_force_portrait">Forçar vertical</string>
<string name="rotation_force_landscape">Forçar apaïsat</string>
<string name="color_filter_r_value">R</string>
<string name="color_filter_g_value">G</string>
<string name="color_filter_b_value">B</string>
<string name="color_filter_a_value">A</string>
<string name="pref_download_directory">Directori de baixades</string>
<string name="pref_download_only_over_wifi">Baixades només amb WIFI</string>
<string name="pref_remove_after_marked_as_read">Eliminar quan es marqui com llegit</string>
<string name="pref_remove_after_read">Eliminar després de llegir</string>
</resources>

View File

@ -0,0 +1,437 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="categories">Kategorie</string>
<string name="manga">Manga</string>
<string name="chapters">Kapitoly</string>
<string name="history">Historie</string>
<string name="label_settings">Nastavení</string>
<string name="label_library">Moje knihovna</string>
<string name="label_recent_manga">Nedávno čteno</string>
<string name="label_latest_updates">Poslední aktualizace</string>
<string name="label_categories">Kategorie</string>
<string name="label_selected">Vybráno: %1$d</string>
<string name="label_backup">Záloha</string>
<string name="label_migration">Zdroj migrace</string>
<string name="label_extensions">Rozšíření</string>
<string name="label_extension_info">Informace o rozšíření</string>
<string name="action_settings">Nastavení</string>
<string name="action_filter">Filtr</string>
<string name="action_filter_downloaded">Staženo</string>
<string name="action_filter_unread">Nepřečteno</string>
<string name="action_filter_read">Přečteno</string>
<string name="action_filter_empty">Odstranit filtr</string>
<string name="action_sort_alpha">Abecedně</string>
<string name="action_sort_last_read">Naposledy čteno</string>
<string name="action_sort_last_updated">Poslední aktualizace</string>
<string name="action_search">Vyhledávání</string>
<string name="action_global_search">Globální vyhledávání</string>
<string name="action_select_all">Vybrat vše</string>
<string name="action_mark_as_read">Označit jako přečtené</string>
<string name="action_mark_as_unread">Označit jako nepřečtené</string>
<string name="action_mark_previous_as_read">Označit předchozí jako přečtené</string>
<string name="action_download">Stáhnout</string>
<string name="action_delete">Odstranit</string>
<string name="action_edit">Upravit</string>
<string name="action_add">Přidat</string>
<string name="action_add_category">Přidat kategorii</string>
<string name="action_edit_categories">Upravit kategorie</string>
<string name="action_show_downloaded">Staženo</string>
<string name="action_close">Zavřít</string>
<string name="action_previous_chapter">Předchozí kapitola</string>
<string name="action_next_chapter">Následující kapitola</string>
<string name="action_remove">Odstranit</string>
<string name="action_open_in_browser">Otevřít v prohlížeči</string>
<string name="action_add_to_home_screen">Přidat na plochu</string>
<string name="action_display_grid">Mřížka</string>
<string name="action_display_list">Seznam</string>
<string name="action_cancel">Zrušit</string>
<string name="action_install">Instalovat</string>
<string name="action_share">Sdílet</string>
<string name="action_save">Uložit</string>
<string name="action_undo">Zpět</string>
<string name="action_export">Exportovat</string>
<string name="action_create">Vytvořit</string>
<string name="action_restore">Obnovit</string>
<string name="action_open">Otevřít</string>
<string name="action_login">Přihlásit se</string>
<string name="loading">Načítání…</string>
<string name="app_not_available">Aplikace není k dispozici</string>
<string name="pref_category_downloads">Stahování</string>
<string name="update_1hour">Každou hodinu</string>
<string name="update_2hour">Každé 2 hodiny</string>
<string name="update_3hour">Každé 3 hodiny</string>
<string name="update_6hour">Každých 6 hodiny</string>
<string name="update_12hour">Každých 12 hodiny</string>
<string name="update_24hour">Denně</string>
<string name="update_48hour">Každé 2 dny</string>
<string name="update_weekly">Týdně</string>
<string name="update_monthly">Měsíčně</string>
<string name="pref_update_only_non_completed">Aktualizovat pouze vycházející mangy</string>
<string name="pref_auto_update_manga_sync">Synchronizovat kapitoly po přečtení</string>
<string name="pref_theme">Téma aplikace</string>
<string name="light_theme">Hlavní téma</string>
<string name="dark_theme">Tmavé téma</string>
<string name="amoled_theme">AMOLED téma</string>
<string name="darkblue_theme">Tmavě modrá</string>
<string name="pref_start_screen">Úvodní obrazovka</string>
<string name="pref_language">Jazyk</string>
<string name="system_default">Výchozí</string>
<string name="all_lang">Vše</string>
<string name="ext_details">Detaily</string>
<string name="ext_update">Aktualizovat</string>
<string name="ext_install">Instalovat</string>
<string name="ext_pending">Čeká se</string>
<string name="ext_downloading">Stahování</string>
<string name="ext_installing">Instalování</string>
<string name="ext_installed">Nainstalováno</string>
<string name="ext_trust">Důvěryhodné</string>
<string name="ext_untrusted">Nedůvěryhodné</string>
<string name="ext_uninstall">Odinstalovat</string>
<string name="ext_preferences">Předvolby</string>
<string name="ext_available">Dostupné</string>
<string name="untrusted_extension">Nedůvěryhodné rozšíření</string>
<string name="untrusted_extension_message">Toto rozšíření bylo podepsané nedůvěryhodným certifikátem a nebylo aktivované.
\n
\nŠkodlivé rozšíření může přečíst přihlašovací údaje uložené v Tachiyomi nebo spustit libovolný kód.
\n
\nDůvěřováním tomuto certifikátu přijímáte tato rizika.</string>
<string name="ext_version_info">Verze: %1$s</string>
<string name="ext_language_info">Jazyk: %1$s</string>
<string name="ext_empty_preferences">Neexistují žádné předvolby k úpravám pro toto rozšíření</string>
<string name="pref_fullscreen">Celá obrazovka</string>
<string name="pref_page_transitions">Přechody stránek</string>
<string name="pref_show_page_number">Zobrazit číslo stránky</string>
<string name="pref_read_with_volume_keys">Tlačítka hlasitosti</string>
<string name="pref_read_with_volume_keys_inverted">Prohodit tlačítka hlasitosti</string>
<string name="pref_reader_theme">Barva pozadí</string>
<string name="white_background">Bílá</string>
<string name="black_background">Černá</string>
<string name="left_to_right_viewer">Zleva doprava</string>
<string name="right_to_left_viewer">Zprava doleva</string>
<string name="pref_rotation_type">Otáčení</string>
<string name="rotation_free">Volné</string>
<string name="rotation_lock">Zamknuté</string>
<string name="rotation_force_portrait">Na výšku</string>
<string name="rotation_force_landscape">Na šířku</string>
<string name="color_filter_r_value">R</string>
<string name="color_filter_g_value">G</string>
<string name="color_filter_b_value">B</string>
<string name="color_filter_a_value">A</string>
<string name="pref_download_directory">Složka pro stahování</string>
<string name="pref_download_only_over_wifi">Stahovat pouze na Wi-Fi</string>
<string name="pref_remove_after_marked_as_read">Odstranit po označení jako přečtené</string>
<string name="pref_remove_after_read">Odstranit po čtení</string>
<string name="custom_dir">Vlastní adresář</string>
<string name="pref_download_new">Stahovat nové kapitoly</string>
<string name="username">Uživatelské jméno</string>
<string name="password">Heslo</string>
<string name="show_password">Zobrazit heslo</string>
<string name="login">Přihlásit se</string>
<string name="login_success">Přihlášení úspěšné</string>
<string name="invalid_login">Chyba při přihlašování</string>
<string name="unknown_error">Neznámá chyba</string>
<string name="confirm_delete_manga">Opravdu chcete odstranit vybrané mangy\?</string>
<string name="no_more_results">Žádné další výsledky</string>
<string name="added_to_library">Manga byla přidána do vaší knihovny</string>
<string name="action_global_search_hint">Globální vyhledávání…</string>
<string name="no_results">Žádné výsledky!</string>
<string name="manga_not_in_db">Manga byla odstraněna z databáze!</string>
<string name="manga_detail_tab">Info</string>
<string name="description">Popis</string>
<string name="ongoing">Vycházející</string>
<string name="remove_from_library">Odstranit z knihovny</string>
<string name="manga_info_full_title_label">Název</string>
<string name="manga_added_library">Přidáno do knihovny</string>
<string name="manga_removed_library">Odstraněno z knihovny</string>
<string name="manga_info_author_label">Autor</string>
<string name="manga_info_chapters_label">Kapitoly</string>
<string name="manga_info_last_chapter_label">Poslední kapitola</string>
<string name="manga_info_source_label">Zdroj</string>
<string name="manga_info_genres_label">Žánry</string>
<string name="shortcut_created">Zástupce byl přidán na plochu.</string>
<string name="icon_creation_fail">Nepodařilo se vytvořit zástupce!</string>
<string name="delete_downloads_for_manga">Smazat stažené kapitoly\?</string>
<string name="source_not_installed">Zdroj není nainstalována: %1$s</string>
<string name="manga_chapters_tab">Kapitoly</string>
<string name="manga_chapter_no_title">Bez názvu</string>
<string name="display_mode_chapter">Kapitola %1$s</string>
<string name="chapter_downloaded">Stažené</string>
<string name="chapter_downloading">Stahování</string>
<string name="chapter_downloading_progress">Stahování (%1$d/%2$d)</string>
<string name="chapter_error">Chyba</string>
<string name="chapter_paused">Pozastaveno</string>
<string name="sort_by_source">Podle zdroje</string>
<string name="manga_download">Stáhnout</string>
<string name="download_1">Stáhnout další kapitolu</string>
<string name="download_5">Stáhnout dalších 5 kapitol</string>
<string name="download_10">Stáhnout dalších 10 kapitol</string>
<string name="download_custom">Stáhnout vlastní</string>
<string name="download_all">Stáhnout vše</string>
<string name="download_unread">Stáhnout nepřečtené</string>
<string name="confirm_delete_chapters">Opravdu chcete smazat vybrané kapitoly\?</string>
<string name="reading">Čtení</string>
<string name="completed">Kompletní</string>
<string name="plan_to_read">Plánováno číst</string>
<string name="repeating">Znovu čtení</string>
<string name="score">Skóre</string>
<string name="title">Název</string>
<string name="track_type">Typ</string>
<string name="track_author">Autor</string>
<string name="dialog_with_checkbox_reset">Restartovat všechny kapitoly mangy</string>
<string name="snack_add_to_library">Přidat mangu do knihovny\?</string>
<string name="picture_saved">Obrázek uložen</string>
<string name="saving_picture">Ukládání obrázku</string>
<string name="options">Možnosti</string>
<string name="custom_filter">Vlastní filtr</string>
<string name="page_downloaded">Stránka zkopírována do %1$s</string>
<string name="downloading">Stahování…</string>
<string name="download_progress">Staženo %1$d%%</string>
<string name="chapter_progress">Stránka: %1$d</string>
<string name="chapter_subtitle">Kapitola %1$s</string>
<string name="no_next_chapter">Další kapitola nenalezena</string>
<string name="no_previous_chapter">Předchozí kapitola nenalezena</string>
<string name="decode_image_error">Obrázek nemohl být dekódován</string>
<string name="transition_finished">Dokončeno:</string>
<string name="transition_current">Aktuální:</string>
<string name="transition_next">Následující:</string>
<string name="transition_previous">Předchozí:</string>
<string name="transition_no_next">Žádná další kapitola</string>
<string name="transition_no_previous">Žádná předchozí kapitola</string>
<string name="transition_pages_loading">Načítání stránek…</string>
<string name="select">Vybrat</string>
<string name="migrate">Migrovat</string>
<string name="copy">Kopírovat</string>
<string name="migrating">Migrovaní…</string>
<string name="download_queue_error">Došlo k chybě při stahování kapitol. Zkuste to znovu v sekci stahování</string>
<string name="notification_update_progress">Postup aktualizace: %1$d/%2$d</string>
<string name="notification_new_chapters">Nalezeny nové kapitoly</string>
<string name="notification_not_connected_to_ac_title">Synchronizace zrušena</string>
<string name="notification_not_connected_to_ac_body">Bez připojení k AC zdroji</string>
<string name="notification_no_connection_title">Synchronizace zrušena</string>
<string name="notification_no_connection_body">Připojení není k dispozici</string>
<string name="file_select_backup">Vybrat záložní soubor</string>
<string name="file_select_icon">Vybrat ikonu zástupce</string>
<string name="update_check_title">Dostupná nová aktualizace!</string>
<string name="update_check_confirm">Stáhnout</string>
<string name="update_check_ignore">Ignorovat</string>
<string name="update_check_no_new_updates">Žádné nové aktualizace</string>
<string name="update_check_look_for_updates">Hledání aktualizací</string>
<string name="update_check_notification_file_download">Stáhnout aktualizaci</string>
<string name="update_check_notification_download_complete">Stahování dokončeno</string>
<string name="update_check_notification_download_error">Chyba při stahování</string>
<string name="update_check_notification_update_available">Dostupná aktualizace</string>
<string name="information_no_recent">Žádné nedávné kapitoly</string>
<string name="information_no_recent_manga">Žádné nedávno čtené mangy</string>
<string name="download_notifier_title_error">Chyba</string>
<string name="download_notifier_unkown_error">Došlo k neznámé chybě při stahování kapitoly</string>
<string name="download_notifier_page_error">V adresáři chybí stránka</string>
<string name="download_notifier_page_ready_error">Stránka nebyla načtena</string>
<string name="download_notifier_text_only_wifi">WiFi připojení není dostupné</string>
<string name="download_notifier_no_network">Síťové připojení není dostupné</string>
<string name="download_notifier_download_paused">Stahování pozastaveno</string>
<string name="channel_library">Knihovna</string>
<string name="label_download_queue">Stahovací fronta</string>
<string name="name">Název</string>
<string name="track">Sledování</string>
<string name="label_catalogues">Katalogy</string>
<string name="label_recent_updates">Aktualizace knihovny</string>
<string name="action_filter_bookmarked">Založeno</string>
<string name="action_sort_total">Celkem kapitol</string>
<string name="action_bookmark">Založit</string>
<string name="action_remove_bookmark">Odstranit záložku</string>
<string name="action_update">Aktualizovat</string>
<string name="action_update_library">Aktualizovat knihovnu</string>
<string name="action_rename_category">Přejmenovat kategorii</string>
<string name="action_move_category">Přesunout do kategorií</string>
<string name="action_start">Start</string>
<string name="action_stop">Stop</string>
<string name="action_pause">Pauza</string>
<string name="action_clear">Vymazat</string>
<string name="action_retry">Opakovat</string>
<string name="action_resume">Pokračovat</string>
<string name="action_display_mode">Změnit režim zobrazení</string>
<string name="action_display">Zobrazení</string>
<string name="action_display_download_badge">Odznáček stažení</string>
<string name="action_set_filter">Nastavit filtr</string>
<string name="action_sort">Seřadit</string>
<string name="action_reset">Resetovat</string>
<string name="action_open_log">Otevřít log</string>
<string name="deleting">Mazání…</string>
<string name="short_recent_updates">Aktualizace</string>
<string name="pref_category_general">Obecné</string>
<string name="pref_category_reader">Čtečka</string>
<string name="pref_category_sources">Zdroje</string>
<string name="pref_category_tracking">Sledování</string>
<string name="pref_category_advanced">Pokročilé</string>
<string name="pref_category_about">O aplikaci</string>
<string name="pref_library_columns">Počet mangy na řádek v knihovně</string>
<string name="portrait">Na výšku</string>
<string name="landscape">Na šířku</string>
<string name="default_columns">Výchozí</string>
<string name="pref_library_update_interval">Frekvence aktualizace knihovny</string>
<string name="update_never">Ručně</string>
<string name="all">Vše</string>
<string name="wifi">Wi-Fi</string>
<string name="charging">Nabíjení</string>
<string name="default_category">Výchozí kategorie</string>
<string name="default_category_summary">Vždy se zeptat</string>
<string name="pref_lock_orientation">Zámek orientace</string>
<string name="pref_double_tap_anim_speed">Rychlost animace při dvojkliku</string>
<string name="pref_crop_borders">Oříznout okraje</string>
<string name="pref_custom_brightness">Použít vlastní jas</string>
<string name="pref_custom_color_filter">Použít vlastní barevný filtr</string>
<string name="pref_read_with_tapping">Klepnutím</string>
<string name="pref_viewer_type">Výchozí prohlížeč</string>
<string name="default_viewer">Výchozí</string>
<string name="vertical_viewer">Vertikální</string>
<string name="webtoon_viewer">Webtoon</string>
<string name="pref_image_scale_type">Typ úpravy velikosti</string>
<string name="scale_type_fit_screen">Přizpůsobit obrazovce</string>
<string name="scale_type_stretch">Natáhnout</string>
<string name="scale_type_fit_width">Přizpůsobit šířku</string>
<string name="scale_type_fit_height">Přizpůsobit šířku</string>
<string name="scale_type_original_size">Původní velikost</string>
<string name="scale_type_smart_fit">Chytré přizpůsobení</string>
<string name="pref_zoom_start">Výchozí poloha zvětšení</string>
<string name="zoom_start_automatic">Automaticky</string>
<string name="zoom_start_left">Vlevo</string>
<string name="zoom_start_right">Vpravo</string>
<string name="zoom_start_center">Na střed</string>
<string name="double_tap_anim_speed_0">Bez animace</string>
<string name="double_tap_anim_speed_normal">Normální</string>
<string name="double_tap_anim_speed_fast">Rychle</string>
<string name="services">Služby</string>
<string name="backup">Záloha</string>
<string name="pref_create_backup">Vytvořit zálohu</string>
<string name="pref_restore_backup">Obnovit zálohu</string>
<string name="pref_backup_directory">Adresář zálohy</string>
<string name="pref_backup_service_category">Služba</string>
<string name="pref_backup_interval">Frekvence zálohy</string>
<string name="dialog_restoring_backup">Obnovování zálohy
\n%1$s přidáno do knihovny</string>
<string name="source_not_found">Zdroj nebyl nalezen</string>
<string name="dialog_restoring_source_not_found">Obnovování zálohy
\n%1$s zdrojů nenalezeno</string>
<string name="backup_created">Záloha vytvořena</string>
<string name="restore_completed">Obnova kompletní</string>
<string name="error_opening_log">Nelze otevřít log</string>
<string name="backup_choice">Co chcete zálohovat\?</string>
<string name="restoring_backup">Obnovování zálohy</string>
<string name="creating_backup">Vytváření zálohy</string>
<string name="pref_clear_chapter_cache">Vymazat mezipaměť kapitol</string>
<string name="used_cache">Využito: %1$s</string>
<string name="cache_deleted">Mezipaměť smazána. %1$d souborů bylo odstraněno</string>
<string name="cache_delete_error">Během vymazávání mezipaměti došlo k chybě</string>
<string name="pref_clear_cookies">Vymazat cookies</string>
<string name="cookies_cleared">Cookies vymazány</string>
<string name="pref_clear_database">Vyčistit databázi</string>
<string name="pref_clear_database_summary">Smaže mangy a kapitoly, které nejsou ve vaší knihovně</string>
<string name="clear_database_confirmation">Jste si jistý\? Přečtené kapitoly a postup v mangách mimo knihovnu budou ztraceny</string>
<string name="clear_database_completed">Položky byly smazány</string>
<string name="pref_refresh_library_metadata">Obnovit metadata knihovny</string>
<string name="pref_refresh_library_tracking">Obnovit metadata sledování</string>
<string name="pref_refresh_library_tracking_summary">Aktualizuje status, skóre a poslední přečtenou kapitolu ze sledovacích služeb</string>
<string name="version">Verze</string>
<string name="build_time">Čas sestavení</string>
<string name="pref_enable_automatic_updates">Zkontrolovat aktualizace</string>
<string name="pref_enable_acra">Odesílat hlášení o pádu</string>
<string name="pref_acra_summary">Pomáhá opravit chyby. Nebudou odeslány žádné citlivé údaje</string>
<string name="updating_category">Aktualizace kategorie</string>
<string name="local_source_badge">Lokální</string>
<string name="also_delete_chapters">Odstranit také stažené kapitoly</string>
<string name="source_search_options">Filtry vyhledávání</string>
<string name="source_requires_login">Tento zdroj vyžaduje přihlášení</string>
<string name="select_source">Vybrat zdroj</string>
<string name="no_valid_sources">Povolte prosím aspoň jeden platný zdroj</string>
<string name="local_source">Lokální manga</string>
<string name="other_source">Ostatní</string>
<string name="latest">Nejnovější</string>
<string name="browse">Procházet</string>
<string name="unknown">Neznámý</string>
<string name="licensed">Licencovaný</string>
<string name="manga_info_artist_label">Kreslíř</string>
<string name="manga_info_latest_data_label">Aktualizováno</string>
<string name="manga_info_status_label">Stav</string>
<string name="circular_icon">Kruhová ikona</string>
<string name="rounded_icon">Zaoblená ikona</string>
<string name="square_icon">Čtvercová ikona</string>
<string name="star_icon">Hvězdicová ikona</string>
<string name="shortcut_title">Název zástupce</string>
<string name="icon_shape">Tvar ikony</string>
<string name="copied_to_clipboard">%1$s zkopírováno do schránky</string>
<string name="chapter_queued">Ve frontě</string>
<string name="fetch_chapters_error">Chyba při načítání kapitol</string>
<string name="sorting_mode">Režim seřazení</string>
<string name="sort_by_number">Podle čísla kapitoly</string>
<string name="custom_download">Stažení vlastního počtu</string>
<string name="custom_hint">počet</string>
<string name="manga_tracking_tab">Sledování</string>
<string name="dropped">Upuštěno</string>
<string name="on_hold">Pozastaveno</string>
<string name="status">Stav</string>
<string name="track_status">Stav</string>
<string name="track_start_date">Započato</string>
<string name="snack_categories_deleted">Kategorie smazány</string>
<string name="set_as_cover">Nastavit jako obal</string>
<string name="cover_updated">Obal aktualizován</string>
<string name="action_edit_cover">Upravit obrázek obalu</string>
<string name="action_sort_up">Seřadit vzestupně</string>
<string name="action_sort_down">Seřadit sestupně</string>
<string name="action_next_unread">Další nepřečtené</string>
<string name="action_move">Přesunout</string>
<string name="pref_library_update_categories">Kategorie zahrnuté do globální aktualizace</string>
<string name="pref_library_update_restriction">Omezení aktualizace knihovny</string>
<string name="pref_library_update_restriction_summary">Aktualizovat pouze pokud jsou splněny podmínky</string>
<string name="pref_keep_screen_on">Udržovat obrazovku zapnutou</string>
<string name="pref_reader_navigation">Navigování</string>
<string name="pager_viewer">Stránkovač</string>
<string name="pref_image_decoder">Dekodér obrazu</string>
<string name="disabled">Zakázáno</string>
<string name="last_read_chapter">Poslední přečtená kapitola</string>
<string name="second_to_last">Předposlední kapitola</string>
<string name="third_to_last">Třetí až poslední kapitola</string>
<string name="fourth_to_last">Čtvrtá až poslední kapitola</string>
<string name="fifth_to_last">Pátá až poslední kapitola</string>
<string name="pref_download_new_categories">Kategorie zahrnuté do stahování</string>
<string name="pref_create_backup_summ">Lze použít k obnovení aktuální knihovny</string>
<string name="pref_restore_backup_summ">Obnovit knihovnu ze záložního souboru</string>
<string name="pref_backup_slots">Maximální automatické zálohování</string>
<string name="restore_completed_content">Obnovení trvalo %1$s.
\nNalezené chyby: %2$s.</string>
<string name="backup_restore_content">Obnovení používá zdroje pro načítání dat, mohou být účtovány poplatky od operátora (v případě použití datového připojení).
\nTaké se před obnovením ujistěte, že jste správně přihlášeni do zdrojů, které to vyžadují.</string>
<string name="file_saved">Soubor uložen do %1$s</string>
<string name="choices_reset">Volby dialogu se vynulují</string>
<string name="pref_refresh_library_metadata_summary">Aktualizuje obaly, žánry, popisy a informace o stavu mangy</string>
<string name="pref_enable_automatic_updates_summary">Automaticky kontrolovat aktualizace aplikace</string>
<string name="login_title">Přihlášení pro %1$s</string>
<string name="library_search_hint">Název nebo autor…</string>
<string name="invalid_combination">Výchozí nemůže být vybrána s ostatními kategoriemi</string>
<string name="show_title">Zobrazit název</string>
<string name="show_chapter_number">Zobrazit číslo kapitoly</string>
<string name="url_not_set">Url mangy není nastaveno, klikněte prosím na název a vyberte mangu znovu</string>
<string name="error_category_exists">Kategorie s tímto jménem již existuje!</string>
<string name="dialog_with_checkbox_remove_description">Toto odstraní datum přečtení této kapitoly. Jste si jistý\?</string>
<string name="confirm_update_manga_sync">Aktualizovat poslední přečtenou kapitolu v povolených službách na %1$d\?</string>
<string name="confirm_set_image_as_cover">Chcete tento obrázek nastavit jako obal\?</string>
<string name="viewer_for_this_series">Prohlížeč této série</string>
<string name="transition_pages_error">Chyba při načítání stránek: %1$s</string>
<string name="recent_manga_source">%1$s - K.%2$s</string>
<string name="migration_info">Klepnutím vyberte zdroj, ze kterého chcete migrovat</string>
<string name="migration_dialog_what_to_include">Vyberte data, která chcete zahrnout</string>
<string name="notification_new_chapters_text">Pro %1$d titulů</string>
<string name="notification_cover_update_failed">Chyba při aktualizaci obalu</string>
<string name="notification_first_add_to_library">Přidejte si prosím mangu do knihovny před tím, než toto uděláte</string>
<string name="file_select_cover">Vybrat obrázek obalu</string>
<string name="update_check_download_started">Stahování začalo</string>
<string name="update_check_notification_download_in_progress">Probíhá stahování</string>
<string name="description_backdrop">Obrázek pozadí manga</string>
<string name="description_cover">Obal mangy</string>
<string name="information_no_downloads">Žádné stahování</string>
<string name="information_empty_library">Vaše knihovna je prázdná, můžete si sem přidat něco z Katalogů.</string>
<string name="information_empty_category">Nemáte žádné kategorie. Klikněte na tlačítko plus a vytvořte nějakou pro organizaci vaší knihovny.</string>
<string name="download_notifier_downloader_title">Stahovač</string>
<string name="channel_common">Běžný</string>
<string name="channel_downloader">Stahovač</string>
<string name="reader_pull_up_for_more_options">Vytáhnout pro více možností</string>
</resources>

View File

@ -82,7 +82,7 @@
<string name="loading">Wird geladen…</string>
<string name="app_not_available">App nicht verfügbar</string>
<string name="short_recent_updates">Updates</string>
<string name="short_recent_updates">Aktualisierungen</string>
<string name="pref_category_general">Allgemein</string>
<string name="pref_category_reader">Lese-Einstellungen</string>
@ -337,8 +337,7 @@
<string name="chapter_subtitle">Kapitel %1$s</string>
<string name="no_next_chapter">Nächstes Kapitel nicht gefunden</string>
<string name="no_previous_chapter">Vorheriges Kapitel nicht gefunden</string>
<string name="decode_image_error">Bild konnte nicht geladen werden.
\nVersuche entweder den Bilddecoder zu ändern oder probiere eine der Optionen weiter unten aus</string>
<string name="decode_image_error">Das Bild konnte nicht dekodiert werden</string>
<string name="confirm_update_manga_sync">Setze das letzte gelesen Kapitel auf %1$d?</string>
<string name="confirm_set_image_as_cover">Wollen Sie dieses Bild als Vorschaubild setzen?</string>
<string name="viewer_for_this_series">Leser dieser Serie</string>
@ -457,4 +456,25 @@
<string name="custom_download">Benutzerdefinierte Anzahl herunterladen</string>
<string name="migration_info">Wähle die Quelle von welcher Migriert werden soll</string>
<string name="migration_dialog_what_to_include">Wähle zu beinhaltende Daten</string>
<string name="darkblue_theme">Dunkelblau</string>
<string name="pager_viewer">Seiten</string>
<string name="source_not_installed">Quelle nicht installiert: %1$s</string>
<string name="download_custom">Benutzerdefinition herunterladen</string>
<string name="repeating">Erneutes Lesen</string>
<string name="track_status">Stand</string>
<string name="track_start_date">Gestartet</string>
<string name="track_type">Typ</string>
<string name="track_author">Autor</string>
<string name="url_not_set">Manga url ist nicht gesetzt. Bitte auf den Titel drücken und den Manga erneut wählen</string>
<string name="transition_finished">Beendet:</string>
<string name="transition_current">Aktuell:</string>
<string name="transition_next">Nächste:</string>
<string name="transition_previous">Vorherige:</string>
<string name="transition_no_next">Es gibt kein nächstes Kapitel</string>
<string name="transition_no_previous">Es gibt kein vorheriges Kapitel</string>
<string name="transition_pages_loading">Lade Seiten…</string>
<string name="transition_pages_error">Seiten konnten nicht geladen werden: %1$s</string>
</resources>

View File

@ -0,0 +1,476 @@
<?xml version="1.0" encoding="utf-8"?>
<resources><string name="name">Όνομα</string>
<string name="categories">Κατηγορίες</string>
<string name="manga">Manga</string>
<string name="chapters">Κεφάλαια</string>
<string name="track">Παρακολούθηση</string>
<string name="history">Ιστορία</string>
<string name="label_settings">Ρυθμίσεις</string>
<string name="label_download_queue">Ουρά λήψεων</string>
<string name="label_library">Η βιβλιοθήκη μου</string>
<string name="label_recent_manga">Πρόσφατα αναγνωρισμένο</string>
<string name="label_catalogues">Κατάλογοι</string>
<string name="label_recent_updates">Ενημερώσεις βιβλιοθήκης</string>
<string name="label_latest_updates">Τελευταίες ενημερώσεις</string>
<string name="label_categories">Κατηγορίες</string>
<string name="label_selected">Επιλεγμένο: %1$d</string>
<string name="label_backup">Αντίγραφο ασφάλειας</string>
<string name="label_migration">Μεταφορά πηγής</string>
<string name="label_extensions">Επεκτάσεις</string>
<string name="label_extension_info">Πληροφορίες επέκτασης</string>
<string name="action_settings">Ρυθμίσεις</string>
<string name="action_filter">Φίλτρο</string>
<string name="action_filter_downloaded">Λήψεις</string>
<string name="action_filter_bookmarked">Σελιδοδείκτες</string>
<string name="action_filter_unread">Αδιάβαστα</string>
<string name="action_filter_read">Διαβασμένα</string>
<string name="action_filter_empty">Αφαίρεση φίλτρου</string>
<string name="action_sort_alpha">Αλφαβητικά</string>
<string name="action_sort_total">Σύνολο κεφαλαίων</string>
<string name="action_sort_last_read">Τελευταίο αναγνωρισμένο</string>
<string name="action_sort_last_updated">Τελευταίο ενημερωμένο</string>
<string name="action_search">Αναζήτηση</string>
<string name="action_global_search">Καθολική αναζήτηση</string>
<string name="action_select_all">Επιλογή όλων</string>
<string name="action_mark_as_read">Σήμανση ως αναγνωρισμένο</string>
<string name="action_mark_as_unread">Σήμανση ως μη αναγνωρισμένο</string>
<string name="action_mark_previous_as_read">Σήμανση προηγούμενου ως αναγνωρισμένο</string>
<string name="action_download">Λήψη</string>
<string name="action_bookmark">Σελιδοδείκτης</string>
<string name="action_remove_bookmark">Διαγραφή σελιδοδείκτη</string>
<string name="action_delete">Διαγραφή</string>
<string name="action_update">Ενημέρωση</string>
<string name="action_update_library">Ενημέρωση βιβλιοθήκης</string>
<string name="action_edit">Επεξεργασία</string>
<string name="action_add">Προσθήκη</string>
<string name="action_add_category">Προσθήκη κατηγορίας</string>
<string name="action_edit_categories">Επεξεργασία βιβλιοθήκης</string>
<string name="action_rename_category">Μετονομασία βιβλιοθήκης</string>
<string name="action_move_category">Μετακίνηση σε κατηγορίες</string>
<string name="action_edit_cover">Επεξεργασία εξώφυλλου</string>
<string name="action_sort_up">Ταξινόμηση κατά αύξουσα σειρά</string>
<string name="action_sort_down">Ταξινόμηση κατά φθίνουσα σειρά</string>
<string name="action_show_downloaded">Λήψεις</string>
<string name="action_next_unread">Επόμενο μη αναγνωρισμένο</string>
<string name="action_start">Εκκίνηση</string>
<string name="action_stop">Σταμάτημα</string>
<string name="action_pause">Παύση</string>
<string name="action_clear">Απαλοιφή</string>
<string name="action_close">Κλείσιμο</string>
<string name="action_previous_chapter">Προηγούμενο κεφάλαιο</string>
<string name="action_next_chapter">Επόμενο κεφάλαιο</string>
<string name="action_retry">Δοκίμασε ξανά</string>
<string name="action_remove">Διαγραφή</string>
<string name="action_resume">Επανεκκίνηση</string>
<string name="action_move">Μεταφορά</string>
<string name="action_open_in_browser">Άνοιγμα σε πρόγραμμα περιήγησης</string>
<string name="action_add_to_home_screen">Προσθήκη στην αρχική οθόνη</string>
<string name="action_display_mode">Αλλαγή τρόπου προβολής</string>
<string name="action_display">Οθόνη</string>
<string name="action_display_grid">Πλέγμα</string>
<string name="action_display_list">Λίστα</string>
<string name="action_display_download_badge">"Λήψη κονκάρδων "</string>
<string name="action_set_filter">Όρισμα φίλτρου</string>
<string name="action_cancel">Ακύρωση</string>
<string name="action_sort">Ταξινόμηση</string>
<string name="action_install">Εγκατάσταση</string>
<string name="action_share">Κοινή χρήση</string>
<string name="action_save">Αποθήκευση</string>
<string name="action_reset">Επαναφορά</string>
<string name="action_undo">Αναίρεση</string>
<string name="action_export">Εξαγωγή</string>
<string name="action_open_log">Άνοιγμα αρχείου καταγραφής</string>
<string name="action_create">Δημιουργία</string>
<string name="action_restore">Επαναφορά</string>
<string name="action_open">Άνοιγμα</string>
<string name="action_login">Εισαγωγή</string>
<string name="deleting">Διαγραφή…</string>
<string name="loading">Φόρτωση…</string>
<string name="app_not_available">Μη διαθέσιμη εφαρμογή</string>
<string name="short_recent_updates">Ενημερώσεις</string>
<string name="pref_category_general">Γενικά</string>
<string name="pref_category_reader">Αναγνώστης</string>
<string name="pref_category_downloads">Λήψεις</string>
<string name="pref_category_sources">Πηγές</string>
<string name="pref_category_tracking">Παρακολούθηση</string>
<string name="pref_category_advanced">Προχωρημένο</string>
<string name="pref_category_about">Περί</string>
<string name="pref_library_columns">Βιβλιοθήκη manga ανά σειρά</string>
<string name="portrait">Κατακόρυφος</string>
<string name="landscape">Οριζόντιος</string>
<string name="default_columns">Προεπιλογή</string>
<string name="pref_library_update_interval">Συχνότητα ενημέρωσης βιβλιοθήκης</string>
<string name="update_never">Εγχειρίδιο</string>
<string name="update_1hour">Ωριαία</string>
<string name="update_2hour">Κάθε 2 ώρες</string>
<string name="update_3hour">Κάθε 3 ώρες</string>
<string name="update_6hour">Κάθε 6 ώρες</string>
<string name="update_12hour">Κάθε 12 ώρες</string>
<string name="update_24hour">Καθημερινά</string>
<string name="update_48hour">Κάθε 2 ημέρες</string>
<string name="update_weekly">Εβδομαδιαία</string>
<string name="update_monthly">Μηνιαία</string>
<string name="pref_library_update_categories">Κατηγορίες που περιλαμβάνονται στην ολική ενημέρωση</string>
<string name="all">Όλα</string>
<string name="pref_library_update_restriction">Περιορισμοί ενημέρωσης βιβλιοθήκης</string>
<string name="pref_library_update_restriction_summary">Ενημέρωση μόνο όταν πληρούνται οι προϋποθέσεις</string>
<string name="wifi">Wi-Fi</string>
<string name="charging">Φόρτωση</string>
<string name="pref_update_only_non_completed">Ενημέρωση μόνο manga σε εξέλιξη</string>
<string name="pref_auto_update_manga_sync">Συγχρονισμός κεφάλαιων μετά τη ανάγνωση</string>
<string name="pref_theme">Θέμα εφαρμογής</string>
<string name="light_theme">Κύριο θέμα</string>
<string name="dark_theme">Σκοτεινό θέμα</string>
<string name="amoled_theme">Θέμα AMOLED</string>
<string name="darkblue_theme">Σκούρο μπλε</string>
<string name="pref_start_screen">Οθόνη εκκίνησης</string>
<string name="pref_language">Γλώσσα</string>
<string name="system_default">Προεπιλογή συστήματος</string>
<string name="default_category">Προεπιλεγμένη κατηγορία</string>
<string name="default_category_summary">Ερώτηση πάντα</string>
<string name="all_lang">Όλα</string>
<string name="ext_details">Λεπτομέρειες</string>
<string name="ext_update">Ενημέρωση</string>
<string name="ext_install">Εγκατάσταση</string>
<string name="ext_pending">Αναμονή</string>
<string name="ext_downloading">Μεταφορά</string>
<string name="ext_installing">Εγκατάσταση</string>
<string name="ext_installed">Εγκαταστημένο</string>
<string name="ext_trust">Εμπιστοσύνη</string>
<string name="ext_untrusted">Μη αξιόπιστο</string>
<string name="ext_uninstall">Απεγκατάσταση</string>
<string name="ext_preferences">Προτιμήσεις</string>
<string name="ext_available">Διαθέσιμο</string>
<string name="untrusted_extension">Μη αξιόπιστη επέκταση</string>
<string name="untrusted_extension_message">Αυτή η επέκταση υπογράφηκε με μη αξιόπιστο πιστοποιητικό και δεν ενεργοποιήθηκε.
\n
\nΜια κακόβουλη επέκταση θα μπορούσε να διαβάσει τα διαπιστευτήρια σύνδεσης που είναι αποθηκευμένα στο Tachiyomi ή να εκτελέσει αυθαίρετο κώδικα.
\n
\nΕμπιστεύοντας αυτό το πιστοποιητικό αποδέχεστε αυτούς τους κινδύνους.</string>
<string name="ext_version_info">Έκδοση: %1$s</string>
<string name="ext_language_info">Γλώσσα: %1$s</string>
<string name="ext_empty_preferences">Δεν υπάρχουν προτιμήσεις επεξεργασίας για αυτή την επέκταση</string>
<string name="pref_fullscreen">Πλήρης οθόνη</string>
<string name="pref_lock_orientation">Κλείδωμα προσανατολισμού</string>
<string name="pref_page_transitions">Αλλαγές σελίδας</string>
<string name="pref_double_tap_anim_speed">Διπλή βρύση κινούμενα σχέδια ταχύτητα</string>
<string name="pref_show_page_number">Εμφάνιση αριθμού σελίδας</string>
<string name="pref_crop_borders">Περικοπή άκρων</string>
<string name="pref_custom_brightness">Χρήση εξατομικευμένης φωτεινότητας</string>
<string name="pref_custom_color_filter">Χρήση εξατομικευμένου φίλτρου χρωμάτων</string>
<string name="pref_keep_screen_on">Να κρατηθεί η οθόνη ανοιχτή</string>
<string name="pref_reader_navigation">Πλοήγηση</string>
<string name="pref_read_with_volume_keys">Πλήκτρα έντασης ήχου</string>
<string name="pref_read_with_volume_keys_inverted">Αναστροφή πλήκτρων έντασης</string>
<string name="pref_read_with_tapping">Άγγιγμα</string>
<string name="pref_reader_theme">Χρώμα παρασκηνίου</string>
<string name="white_background">Άσπρο</string>
<string name="black_background">Μαύρο</string>
<string name="pref_viewer_type">Προεπιλεγμένος αναγνώστης</string>
<string name="default_viewer">Προεπιλογή</string>
<string name="left_to_right_viewer">Αριστερά προς τα δεξιά</string>
<string name="right_to_left_viewer">Δεξιά προς τα αριστερά</string>
<string name="vertical_viewer">Κάθετα</string>
<string name="webtoon_viewer">Webtoon</string>
<string name="pager_viewer">Σελιδοποίηση</string>
<string name="pref_image_decoder">Αποκωδικοποιητής εικόνας</string>
<string name="pref_image_scale_type">Τύπος κλίμακας</string>
<string name="scale_type_fit_screen">Προσαρμογή στην οθόνη</string>
<string name="scale_type_stretch">Τέντωμα</string>
<string name="scale_type_fit_width">Προσαρμογή στο πλάτος</string>
<string name="scale_type_fit_height">Προσαρμογή στο ύψος</string>
<string name="scale_type_original_size">Αρχικό μέγεθος</string>
<string name="scale_type_smart_fit">Έξυπνη προσαρμογή</string>
<string name="pref_zoom_start">Μεγέθυνση αρχικής θέσης</string>
<string name="zoom_start_automatic">Αυτόματα</string>
<string name="zoom_start_left">Αριστερά</string>
<string name="zoom_start_right">Δεξιά</string>
<string name="zoom_start_center">Κέντρο</string>
<string name="double_tap_anim_speed_0">Χωρίς κίνηση</string>
<string name="double_tap_anim_speed_normal">Κανονικό</string>
<string name="double_tap_anim_speed_fast">Γρήγορο</string>
<string name="pref_rotation_type">Περιστροφή</string>
<string name="rotation_free">Ελεύθερο</string>
<string name="rotation_lock">Κλέιδωμα</string>
<string name="rotation_force_portrait">Υποχρεωτικά κατακόρυφα</string>
<string name="rotation_force_landscape">Υποχρεωτικά οριζόντια</string>
<string name="color_filter_r_value">R</string>
<string name="color_filter_g_value">G</string>
<string name="color_filter_b_value">B</string>
<string name="color_filter_a_value">A</string>
<string name="pref_download_directory">Φάκελος λήψεων</string>
<string name="pref_download_only_over_wifi">Λήψη μόνε με Wi-Fi</string>
<string name="pref_remove_after_marked_as_read">Διαγραφή αν σημειώνεται ως αναγνωσμένο</string>
<string name="pref_remove_after_read">Διαγραφή μετά την ανάγνωση</string>
<string name="custom_dir">Εξατομικευμένος φάκελος</string>
<string name="disabled">Απενεργοποιημένο</string>
<string name="last_read_chapter">Τελευταίο αναγνωσμένο κεφάλαιο</string>
<string name="second_to_last">Προτελευταίο αναγνωσμένο κεφάλαιο</string>
<string name="third_to_last">Προ-προτελευταίο αναγνωσμένο κεφάλαιο</string>
<string name="fourth_to_last">Προ-προ-προτελευταίο αναγνωσμένο κεφάλαιο</string>
<string name="fifth_to_last">Προ-προ-προ-προτελευταίο αναγνωσμένο κεφάλαιο</string>
<string name="pref_download_new">Λήψη νέων κεφάλαιων</string>
<string name="pref_download_new_categories">Κατηγορίες που να συμπεριλαμβάνονται στην λήψη</string>
<string name="services">Υπηρεσίες</string>
<string name="backup">Αντίγραφο ασφαλείας</string>
<string name="pref_create_backup">Δημιουργία αντίγραφου ασφαλείας</string>
<string name="pref_create_backup_summ">Μπορεί να χρησιμοποιηθεί για επαναφορά τρέχουσας βιβλιοθήκης</string>
<string name="pref_restore_backup">Επαναφορά αντίγραφου ασφάλειας</string>
<string name="pref_restore_backup_summ">Επαναφορά βιβλιοθήκης από αρχείο αντίγραφου ασφάλειας</string>
<string name="pref_backup_directory">Φάκελος αντίγραφου ασφάλειας</string>
<string name="pref_backup_service_category">Υπηρεσία</string>
<string name="pref_backup_interval">Συχνότητα αντίγραφου ασφάλειας</string>
<string name="pref_backup_slots">Μέγιστος αριθμός αυτόματων αντιγραφών ασφάλειας</string>
<string name="dialog_restoring_backup">Επαναφορά αντίγραφου ασφάλειας
\n%1$s προστέθηκε στη βιβλιοθήκη</string>
<string name="source_not_found">"Δεν βρέθηκε πηγή "</string>
<string name="dialog_restoring_source_not_found">Επαναφορά αντίγραφου ασφάλειας %1$s
\nΔεν βρέθηκε πηγή</string>
<string name="backup_created">Δημιουργήθηκε αντίγραφο ασφαλείας</string>
<string name="restore_completed">Η επαναφορά ολοκληρώθηκε</string>
<string name="error_opening_log">Δεν ήταν δυνατό το άνοιγμα αρχείου καταγραφής</string>
<string name="restore_completed_content">Η επαναφορά διήρκησε %1$s.
\nΒρέθηκαν %2$s σφάλματα.</string>
<string name="backup_restore_content">Η επαναφορά χρησιμοποιεί την πηγή για την μεταφορά δεδομένων, ενδέχεται να ισχύουν έξοδα φορέα.
\nΕπίσης, βεβαιωθείτε ότι είστε σωστά συνδεδεμένοι σε πηγές που χρειάζονται σύνδεση, πριν από την αποκατάσταση.</string>
<string name="file_saved">Το αρχείο αποθηκεύτηκε στο %1$s</string>
<string name="backup_choice">Τι θέλετε να κάνετε backup;</string>
<string name="restoring_backup">Επαναφορά αντιγράφων ασφαλείας</string>
<string name="creating_backup">Δημιουργία αντιγράφων ασφαλείας</string>
<string name="pref_clear_chapter_cache">Καθάρισμα προσωρινής μνήμης κεφαλαίου</string>
<string name="used_cache">Χρησιμοποιήθηκε: %1$s</string>
<string name="cache_deleted">Η κρυφή μνήμη διαγράφηκε. %1$d αρχεία έχουν διαγραφεί</string>
<string name="cache_delete_error">Παρουσιάστηκε σφάλμα κατά την εκκαθάριση της προσωρινής μνήμης</string>
<string name="pref_clear_cookies">Διαγραφή cookies</string>
<string name="cookies_cleared">Τα cookies διαγράφηκαν</string>
<string name="choices_reset">Οι επιλογές διαλόγου επαναφέρθηκαν</string>
<string name="pref_clear_database">Καθαρισμός βάσης δεδομένων</string>
<string name="pref_clear_database_summary">Διαγραφή manga και κεφάλαιων που δεν περιλαμβάνονται στη βιβλιοθήκη σας</string>
<string name="clear_database_confirmation">Είσαι σίγουρος\? Τα διαβασμένα κεφάλαια και η πρόοδος των manga εκτός βιβλιοθήκης θα χαθεί</string>
<string name="clear_database_completed">Οι καταχωρίσεις διαγράφηκαν</string>
<string name="pref_refresh_library_metadata">Ανανέωση μεταδεδομένων βιβλιοθήκης</string>
<string name="pref_refresh_library_metadata_summary">Ενημερώνει εξώφυλλα, είδη, περιγραφή και πληροφορίες κατάστασης του manga</string>
<string name="pref_refresh_library_tracking">Ανανέωση μεταδεδομένων παρακολούθησης</string>
<string name="pref_refresh_library_tracking_summary">Ενημερώνει κατάσταση, βαθμολογία και τελευταίο αναγνωσμένο κεφάλαιο από τις υπηρεσίες παρακολούθησης</string>
<string name="version">Έκδοση</string>
<string name="build_time">Χρόνος κατασκευής</string>
<string name="pref_enable_automatic_updates">Έλεγχος για ενημερώσεις</string>
<string name="pref_enable_automatic_updates_summary">Αυτόματος έλεγχος για ενημερώσεις εφαρμογής</string>
<string name="pref_enable_acra">Αποστολή αναφορών σφαλμάτων</string>
<string name="pref_acra_summary">Βοηθά στην επιδιόρθωση τυχόν σφαλμάτων. Δεν θα αποστέλλονται ευαίσθητα δεδομένα</string>
<string name="login_title">Σύνδεση για %1$s</string>
<string name="username">Όνομα χρήστη</string>
<string name="password">Κωδικός πρόσβασης</string>
<string name="show_password">Δείξε τον κωδικό</string>
<string name="login">Σύνδεση</string>
<string name="login_success">Επιτυχής σύνδεση</string>
<string name="invalid_login">Σφάλμα σύνδεσης</string>
<string name="unknown_error">Άγνωστο σφάλμα</string>
<string name="library_search_hint">Τίτλος ή συγγραφέας…</string>
<string name="updating_category">Ενημέρωση κατηγορίας</string>
<string name="local_source_badge">Τοπικό</string>
<string name="confirm_delete_manga">Είστε βέβαιοι ότι θέλετε να καταργήσετε τα επιλεγμένα manga;</string>
<string name="also_delete_chapters">"Επίσης, διαγραφή κεφάλαιων που έχουν ληφθεί "</string>
<string name="source_search_options">Φίλτρα αναζήτησης</string>
<string name="source_requires_login">Αυτή η πηγή απαιτεί να συνδεθείτε</string>
<string name="select_source">Επιλέξτε πηγή</string>
<string name="no_valid_sources">Ενεργοποιήστε τουλάχιστον μία έγκυρη πηγή</string>
<string name="no_more_results">Δεν υπάρχουν άλλα αποτελέσματα</string>
<string name="local_source">Τοπικά manga</string>
<string name="other_source">Άλλα</string>
<string name="invalid_combination">Δεν είναι δυνατή η επιλογή προεπιλογής με άλλες κατηγορίες</string>
<string name="added_to_library">Το manga έχει προστεθεί στη βιβλιοθήκη σας
\n</string>
<string name="action_global_search_hint">Καθολική αναζήτηση…</string>
<string name="no_results">Δεν βρέθηκαν αποτελέσματα!</string>
<string name="latest">Τελευταίο</string>
<string name="browse">Ξεφύλλισμα</string>
<string name="manga_not_in_db">Αυτό το manga αφαιρέθηκε από τη βάση δεδομένων!</string>
<string name="manga_detail_tab">Πληροφορίες</string>
<string name="description">Περιγραφή</string>
<string name="ongoing">Σε εξέλιξη</string>
<string name="unknown">Άγνωστο</string>
<string name="licensed">Αδειούχος</string>
<string name="remove_from_library">Κατάργηση από τη βιβλιοθήκη</string>
<string name="manga_info_full_title_label">Τίτλος</string>
<string name="manga_added_library">Προστέθηκε στη βιβλιοθήκη</string>
<string name="manga_removed_library">Αφαιρέθηκε από τη βιβλιοθήκη</string>
<string name="manga_info_author_label">Συγγραφέας</string>
<string name="manga_info_artist_label">Καλλιτέχνης</string>
<string name="manga_info_chapters_label">Κεφάλαια</string>
<string name="manga_info_last_chapter_label">Τελευταίο κεφάλαιο</string>
<string name="manga_info_latest_data_label">Ενημερωμένο</string>
<string name="manga_info_status_label">Κατάσταση</string>
<string name="manga_info_source_label">Πηγή</string>
<string name="manga_info_genres_label">Είδη</string>
<string name="circular_icon">Κυκλικό εικονίδιο</string>
<string name="rounded_icon">"Στρογγυλεμένο εικονίδιο "</string>
<string name="square_icon">Τετράγωνο εικονίδιο</string>
<string name="star_icon">Εικονίδιο αστέρι</string>
<string name="shortcut_title">Συντόμευση τίτλου</string>
<string name="shortcut_created">Η συντόμευση προστέθηκε στην αρχική οθόνη.</string>
<string name="icon_shape">Σχήμα εικονιδίου</string>
<string name="icon_creation_fail">Αποτυχία δημιουργίας συντόμευσης!</string>
<string name="delete_downloads_for_manga">Να διαγραφούν τα κεφάλαια που έχουν ληφθεί;</string>
<string name="copied_to_clipboard">%1$s αντιγράφτηκε στο πρόχειρο</string>
<string name="source_not_installed">Η πηγή δεν είναι εγκατεστημένη: %1$s</string>
<string name="manga_chapters_tab">Κεφάλαια</string>
<string name="manga_chapter_no_title">Χωρίς τίτλο</string>
<string name="display_mode_chapter">Κεφάλαιο %1$s</string>
<string name="chapter_downloaded">Λήψη</string>
<string name="chapter_queued">Στην ουρά</string>
<string name="chapter_downloading">Λήψη</string>
<string name="chapter_downloading_progress">Λήψη (%1$d/%2$d)</string>
<string name="chapter_error">Σφάλμα</string>
<string name="chapter_paused">Παύση</string>
<string name="fetch_chapters_error">Σφάλμα κατά την ανάκτηση κεφαλαίων</string>
<string name="show_title">Εμφάνιση τίτλου</string>
<string name="show_chapter_number">Εμφάνιση αριθμού κεφαλαίου</string>
<string name="sorting_mode">Λειτουργία ταξινόμησης</string>
<string name="sort_by_source">Με βάση την πηγή</string>
<string name="sort_by_number">Ανά αριθμό κεφαλαίου</string>
<string name="manga_download">Λήψη</string>
<string name="custom_download">Λήψη προσαρμοσμένου ποσού</string>
<string name="custom_hint">ποσό</string>
<string name="download_1">Λήψη επόμενου κεφαλαίου</string>
<string name="download_5">Λήψη επόμενων 5 κεφαλαίων</string>
<string name="download_10">Λήψη επόμενων 10 κεφαλαίων</string>
<string name="download_custom">"Προσαρμοσμένη λήψη "</string>
<string name="download_all">Λήψη όλων</string>
<string name="download_unread">Λήψη μη αναγνωσμένων</string>
<string name="confirm_delete_chapters">Είστε βέβαιοι ότι θέλετε να διαγράψετε επιλεγμένα κεφάλαια;</string>
<string name="manga_tracking_tab">Παρακολούθηση</string>
<string name="reading">Ανάγνωση</string>
<string name="completed">Ολοκληρωμένο</string>
<string name="dropped">Παραλείφθηκε</string>
<string name="on_hold">Σε αναμονή</string>
<string name="plan_to_read">Προγραμματισμένο για ανάγνωση</string>
<string name="repeating">Δεύτερη ανάγνωση</string>
<string name="score">Βαθμολογία</string>
<string name="title">Τίτλος</string>
<string name="status">Κατάσταση</string>
<string name="track_status">Κατάσταση</string>
<string name="track_start_date">Ξεκίνησε</string>
<string name="track_type">Τύπος</string>
<string name="track_author">Συγγραφέας</string>
<string name="url_not_set">Το Manga url δεν έχει οριστεί, κάντε κλικ στον τίτλο και επιλέξτε ξανά το manga</string>
<string name="error_category_exists">Μια κατηγορία με αυτό το όνομα υπάρχει ήδη!</string>
<string name="snack_categories_deleted">Οι κατηγορίες διαγράφηκαν</string>
<string name="dialog_with_checkbox_remove_description">Αυτό θα αφαιρέσει την ημερομηνία ανάγνωσης αυτού του κεφαλαίου. Είσαι σίγουρος;</string>
<string name="dialog_with_checkbox_reset">Επαναφέρετε όλα τα κεφάλαια για αυτό το μάγκα</string>
<string name="snack_add_to_library">Προσθέστε το manga στη βιβλιοθήκη;</string>
<string name="picture_saved">Η εικόνα αποθηκεύτηκε</string>
<string name="saving_picture">Αποθήκευση εικόνας</string>
<string name="options">Επιλογές</string>
<string name="custom_filter">Προσαρμοσμένο φίλτρο</string>
<string name="set_as_cover">Ορισμός ως εξώφυλλο</string>
<string name="cover_updated">Εξώφυλλο ενημερώθηκε</string>
<string name="page_downloaded">Η σελίδα αντιγράφτηκε σε %1$s</string>
<string name="downloading">Λήψη…</string>
<string name="download_progress">Λήψη %1$d%%</string>
<string name="chapter_progress">Σελίδα: %1$d</string>
<string name="chapter_subtitle">Κεφάλαιο %1$s</string>
<string name="no_next_chapter">Το επόμενο κεφάλαιο δεν βρέθηκε</string>
<string name="no_previous_chapter">Το προηγούμενο κεφάλαιο δεν βρέθηκε</string>
<string name="decode_image_error">Δεν ήταν δυνατή η αποκωδικοποίηση της εικόνας</string>
<string name="confirm_update_manga_sync">Ενημέρωση τελευταίου αναγνωσμένο κεφαλαίο στις ενεργοποιημένες υπηρεσίες σε %1$d ;</string>
<string name="confirm_set_image_as_cover">Θέλετε να ορίσετε αυτήν την εικόνα ως εξώφυλλο;</string>
<string name="viewer_for_this_series">Αναγνώστης για αυτήν τη σειρά</string>
<string name="transition_finished">Διαβασμένο:</string>
<string name="transition_current">Τρέχον:</string>
<string name="transition_next">Επόμενο:</string>
<string name="transition_previous">Προηγούμενο:</string>
<string name="transition_no_next">Δεν υπάρχει επόμενο κεφάλαιο</string>
<string name="transition_no_previous">Δεν υπάρχει προηγούμενο κεφάλαιο</string>
<string name="transition_pages_loading">Φόρτωση σελίδων…</string>
<string name="transition_pages_error">Η φόρτωση σελίδων απέτυχε: %1$s</string>
<string name="recent_manga_source">%1$s - Κεφ.%2$s</string>
<string name="migration_info">Πατήστε για να επιλέξετε την πηγή από την οποία θα μεταφέρετε</string>
<string name="migration_dialog_what_to_include">Επιλέξτε τα δεδομένα που θέλετε να συμπεριλάβετε</string>
<string name="select">Επιλογή</string>
<string name="migrate">Μεταφορά</string>
<string name="copy">Αντιγραφή</string>
<string name="migrating">Μεταφορά…</string>
<string name="download_queue_error">Παρουσιάστηκε σφάλμα κατά τη λήψη κεφαλαίων. Μπορείτε να δοκιμάσετε ξανά στην ενότητα λήψεων</string>
<string name="notification_update_progress">Ενημέρωση προόδου: %1$d/%2$d</string>
<string name="notification_new_chapters">Βρέθηκαν νέα κεφάλαια</string>
<string name="notification_new_chapters_text">Για %1$d τίτλους</string>
<string name="notification_cover_update_failed">Δεν ήταν δυνατή η ενημέρωση του εξώφυλλου</string>
<string name="notification_first_add_to_library">Παρακαλώ προσθέστε το manga στη βιβλιοθήκη σας πριν κάνετε κάτι τέτοιο</string>
<string name="notification_not_connected_to_ac_title">Ο συγχρονισμός ακυρώθηκε</string>
<string name="notification_not_connected_to_ac_body">Δεν είναι συνδεδεμένο με τροφοδοσία</string>
<string name="notification_no_connection_title">Ο συγχρονισμός ακυρώθηκε</string>
<string name="notification_no_connection_body">Η σύνδεση δεν είναι διαθέσιμη</string>
<string name="file_select_cover">Επιλέξτε εικόνα εξωφύλλου</string>
<string name="file_select_backup">Επιλέξτε αρχείο αντιγράφου ασφαλείας</string>
<string name="file_select_icon">Επιλέξτε εικονίδιο συντόμευσης</string>
<string name="update_check_title">Νέα διαθέσιμη ενημέρωση!</string>
<string name="update_check_confirm">Λήψη</string>
<string name="update_check_ignore">Παράλειψη</string>
<string name="update_check_no_new_updates">Δεν υπάρχουν διαθέσιμες νέες ενημερώσεις</string>
<string name="update_check_download_started">Ξεκίνησε η λήψη</string>
<string name="update_check_look_for_updates">Αναζήτηση για ενημερώσεις</string>
<string name="update_check_notification_file_download">Λήψη ενημέρωσης</string>
<string name="update_check_notification_download_in_progress">Λήψη σε εξέλιξη</string>
<string name="update_check_notification_download_complete">Η λήψη ολοκληρώθηκε</string>
<string name="update_check_notification_download_error">Σφάλμα λήψης</string>
<string name="update_check_notification_update_available">Υπάρχει διαθέσιμη ενημέρωση</string>
<string name="description_backdrop">Εικόνα παρασκηνίου του manga</string>
<string name="description_cover">Εξώφυλλο manga</string>
<string name="information_no_downloads">Δεν υπάρχουν λήψεις</string>
<string name="information_no_recent">Δεν υπάρχουν πρόσφατα κεφάλαια</string>
<string name="information_no_recent_manga">Δεν υπάρχουν πρόσφατα αναγνωσμένα manga</string>
<string name="information_empty_library">Η βιβλιοθήκη σας είναι κενή, μπορείτε να προσθέσετε σειρές στη βιβλιοθήκη σας από τους καταλόγους.</string>
<string name="information_empty_category">Δεν έχετε κατηγορίες. Χτυπήστε το πλήκτρο συν για να δημιουργήσετε ένα για την οργάνωση της βιβλιοθήκης σας.</string>
<string name="download_notifier_downloader_title">Downloader</string>
<string name="download_notifier_title_error">Σφάλμα</string>
<string name="download_notifier_unkown_error">Παρουσιάστηκε μη αναμενόμενο σφάλμα κατά τη λήψη του κεφαλαίου</string>
<string name="download_notifier_page_error">Μια σελίδα λείπει από τον κατάλογο</string>
<string name="download_notifier_page_ready_error">Δεν φορτώνεται μια σελίδα</string>
<string name="download_notifier_text_only_wifi">Δεν υπάρχει διαθέσιμη σύνδεση wifi</string>
<string name="download_notifier_no_network">Δεν υπάρχει διαθέσιμη σύνδεση δικτύου</string>
<string name="download_notifier_download_paused">Λήψη σε παύση</string>
<string name="channel_common">Κοινό</string>
<string name="channel_library">Βιβλιοθήκη</string>
<string name="channel_downloader">Downloader</string>
</resources>

View File

@ -1,9 +1,8 @@
<?xml version='1.0' encoding='UTF-8'?>
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="name">Nombre</string>
<!-- Activities and fragments labels (toolbar title) -->
<string name="label_settings">Opciones</string>
<string name="label_settings">Configuraciones</string>
<string name="label_download_queue">Cola de descargas</string>
<string name="label_library">Mi librería</string>
<string name="label_recent_manga">Leído Recientemente</string>
@ -12,10 +11,9 @@
<string name="label_categories">Categorías</string>
<string name="label_selected">Seleccionados: %1$d</string>
<string name="label_backup">Copia de seguridad</string>
<!-- Actions -->
<string name="action_settings">Opciones</string>
<string name="action_filter">Filtro</string>
<string name="action_settings">Configuraciones</string>
<string name="action_filter">Filtrar</string>
<string name="action_filter_downloaded">Descargado</string>
<string name="action_filter_unread">No leído</string>
<string name="action_filter_empty">Eliminar filtros</string>
@ -52,13 +50,11 @@
<string name="action_cancel">Cancelar</string>
<string name="action_sort">Ordenar</string>
<string name="action_install">Instalar</string>
<!-- Operations -->
<string name="deleting">Eliminando…</string>
<string name="loading">Cargando…</string>
<!-- Preferences -->
<!-- Subsections -->
<!-- Subsections -->
<string name="pref_category_general">General</string>
<string name="pref_category_reader">Lector</string>
<string name="pref_category_downloads">Descargas</string>
@ -66,8 +62,7 @@
<string name="pref_category_tracking">Seguimiento</string>
<string name="pref_category_advanced">Avanzado</string>
<string name="pref_category_about">Acerca de</string>
<!-- General section -->
<!-- General section -->
<string name="pref_library_columns">Mangas por fila</string>
<string name="portrait">Retrato</string>
<string name="landscape">Apaisado</string>
@ -90,8 +85,7 @@
<string name="pref_theme">Tema de la aplicación</string>
<string name="light_theme">Tema principal</string>
<string name="dark_theme">Tema oscuro</string>
<!-- Reader section -->
<!-- Reader section -->
<string name="pref_fullscreen">Pantalla completa</string>
<string name="pref_lock_orientation">Bloquear orientación</string>
<string name="pref_page_transitions">Habilitar transiciones</string>
@ -109,7 +103,7 @@
<string name="left_to_right_viewer">Izquierda a derecha</string>
<string name="right_to_left_viewer">Derecha a izquierda</string>
<string name="vertical_viewer">Vertical</string>
<string name="webtoon_viewer">Webtoon</string>
<string name="webtoon_viewer">Webtoons</string>
<string name="pref_image_decoder">Decodificador de imagen</string>
<string name="pref_image_scale_type">Tipo de escalado</string>
<string name="scale_type_fit_screen">Ajustar a la pantalla</string>
@ -128,21 +122,16 @@
<string name="rotation_lock">Bloqueado</string>
<string name="rotation_force_portrait">Forzar retrato</string>
<string name="rotation_force_landscape">Forzar apaisado</string>
<!-- Downloads section -->
<!-- Downloads section -->
<string name="pref_download_directory">Directorio de descargas</string>
<string name="pref_download_only_over_wifi">Descargar solo a través de Wi-Fi</string>
<string name="pref_remove_after_marked_as_read">Eliminar al marcar como leído</string>
<string name="pref_remove_after_read">Eliminar después de leer</string>
<string name="custom_dir">Directorio personalizado</string>
<!-- Sources section -->
<!-- Sync section -->
<!-- Sources section -->
<!-- Sync section -->
<string name="services">Servicios</string>
<!-- Advanced section -->
<!-- Advanced section -->
<string name="pref_clear_chapter_cache">Borrar la caché de los capítulos</string>
<string name="used_cache">Usado: %1$s</string>
<string name="cache_deleted">Caché borrada. %1$d archivos se han eliminado</string>
@ -153,8 +142,7 @@
<string name="pref_clear_database_summary">Eliminar solo manga y capítulos que no están en tu librería</string>
<string name="clear_database_confirmation">¿Estás seguro? Los capítulos leídos y el progreso de manga que no esté en la librería se perderá</string>
<string name="clear_database_completed">Entradas borradas</string>
<!-- About section -->
<!-- About section -->
<string name="version">Versión</string>
<string name="build_time">Hora de compilación</string>
<string name="pref_enable_automatic_updates">Buscar actualizaciones</string>
@ -162,8 +150,6 @@
<!-- ACRA -->
<string name="pref_enable_acra">Enviar informes de fallos</string>
<string name="pref_acra_summary">Ayuda a corregir cualquier error. No se enviarán datos sensibles</string>
<!-- Login dialog -->
<string name="login_title">Iniciar sesión en %1$s</string>
<string name="username">Nombre de usuario</string>
@ -173,16 +159,13 @@
<string name="login_success">Inicio de sesión exitoso</string>
<string name="invalid_login">Inicio de sesión inválido</string>
<string name="unknown_error">Error desconocido</string>
<!-- Library fragment -->
<string name="library_search_hint">Título o autor…</string>
<string name="updating_category">Actualizando categoría</string>
<string name="confirm_delete_manga">¿Estás seguro de eliminar los mangas seleccionados?</string>
<!-- Catalogue fragment -->
<string name="source_requires_login">Este sitio requiere que inicies sesión</string>
<string name="select_source">Selecciona una fuente</string>
<!-- Manga info fragment -->
<string name="manga_detail_tab">Info</string>
<string name="description">Descripción</string>
@ -196,7 +179,6 @@
<string name="manga_info_status_label">Estado</string>
<string name="manga_info_source_label">Fuentes</string>
<string name="manga_info_genres_label">Géneros</string>
<!-- Manga chapters fragment -->
<string name="manga_chapters_tab">Capítulos</string>
<string name="manga_chapter_no_title">Sin título</string>
@ -210,7 +192,7 @@
<string name="show_title">Mostrar título</string>
<string name="show_chapter_number">Mostrar número de capítulo</string>
<string name="sorting_mode">Ordenado de capítulos</string>
<string name="sort_by_source">Como en la fuente</string>
<string name="sort_by_source">Por fuente</string>
<string name="sort_by_number">Por número de capítulo</string>
<string name="manga_download">Descargar</string>
<string name="download_1">Descargar siguiente capítulo</string>
@ -219,7 +201,6 @@
<string name="download_all">Descargar todos</string>
<string name="download_unread">Descargar no leídos</string>
<string name="confirm_delete_chapters">¿Estás seguro de eliminar los capítulos seleccionados?</string>
<!-- MyAnimeList fragment -->
<string name="reading">Leyendo</string>
<string name="completed">Completo</string>
@ -230,12 +211,9 @@
<string name="title">Título</string>
<string name="status">Estado</string>
<string name="chapters">Capítulos</string>
<!-- Dialog remove recently view -->
<string name="dialog_with_checkbox_remove_description">Esto eliminará la fecha de lectura de este capítulo. ¿Estás seguro?</string>
<string name="dialog_with_checkbox_reset">Reiniciar todas los capítulos de este manga</string>
<!-- Reader activity -->
<string name="downloading">Descargando…</string>
<string name="download_progress">Descargado %1$d%%</string>
@ -243,19 +221,15 @@
<string name="chapter_subtitle">Capítulo %1$s</string>
<string name="no_next_chapter">Siguiente capítulo no encontrado</string>
<string name="no_previous_chapter">Capítulo anterior no encontrado</string>
<string name="decode_image_error">La imagen no se pudo decodificar. Intente de nuevo cambiándolo o seleccione una de las siguientes opciones</string>
<string name="decode_image_error">"La imagen no se pudo decodificar. "</string>
<string name="confirm_update_manga_sync">¿Actualizar el último capítulo leído a %1$d en los servicios activos?</string>
<string name="viewer_for_this_series">Lectura para esta serie</string>
<!-- Backup fragment -->
<string name="backup">Copia de seguridad</string>
<!-- Recent manga fragment -->
<string name="recent_manga_source">%1$s - Ch.%2$s</string>
<!-- Downloads activity and service -->
<string name="download_queue_error">Se ha producido un error al descargar capítulos. Puede intentarlo de nuevo en la sección de descargas</string>
<!-- Library update service notifications -->
<string name="notification_update_progress">Progreso de actualización: %1$d/%2$d</string>
<string name="notification_new_chapters">Nuevos capítulos encontrados</string>
@ -264,11 +238,9 @@
<string name="notification_not_connected_to_ac_body">El dispositivo no está cargando</string>
<string name="notification_no_connection_title">Sincronización cancelada</string>
<string name="notification_no_connection_body">Sin conexión o restringido a Wi-Fi</string>
<!-- File Picker Titles -->
<string name="file_select_cover">Seleccione la imagen de portada</string>
<string name="file_select_backup">Seleccione la copia de seguridad</string>
<!--UpdateCheck-->
<string name="update_check_title">¡Nueva actualización disponible!</string>
<string name="update_check_confirm">Descargar</string>
@ -276,36 +248,30 @@
<string name="update_check_no_new_updates">No hay nueva actualización</string>
<string name="update_check_download_started">Comenzando descarga</string>
<string name="update_check_look_for_updates">Buscando actualizaciones</string>
<!--UpdateCheck Notifications-->
<string name="update_check_notification_file_download">Descargar actualización</string>
<string name="update_check_notification_download_in_progress">Descarga en progreso</string>
<string name="update_check_notification_download_complete">Descarga completa</string>
<string name="update_check_notification_download_error">Error en la descargar</string>
<string name="update_check_notification_update_available">Actualización disponible</string>
<!--Content Description-->
<string name="description_backdrop">Imagen de fondo del manga</string>
<string name="description_cover">Imagen de fondo del manga</string>
<!-- Information Text -->
<string name="information_no_downloads">No hay descargas</string>
<string name="information_no_recent">No hay capítulos recientes</string>
<string name="information_no_recent_manga">No hay mangas leídos recientes</string>
<string name="information_empty_library">Tu librería está vacía, puedes agregar series a tu librería desde los Catálogos.</string>
<!-- Download Notification -->
<string name="download_notifier_title_error">Error</string>
<string name="download_notifier_unkown_error">Se ha producido un error inesperado al descargar el capítulo</string>
<string name="download_notifier_page_error">Una página no se encuentra en el directorio</string>
<string name="download_notifier_page_ready_error">No se ha cargado una página</string>
<string name="download_notifier_text_only_wifi">Conexión Wi-Fi no disponible</string>
<string name="categories">Categorías</string>
<string name="categories">Categorías</string>
<string name="manga">Manga</string>
<string name="track">Seguimiento</string>
<string name="history">Historial</string>
<string name="label_latest_updates">Últimas Actualizaciones</string>
<string name="action_filter_bookmarked">Marcado</string>
<string name="action_filter_read">Leído</string>
@ -318,8 +284,7 @@
<string name="action_add">Añadir</string>
<string name="download_notifier_no_network">Conexión a la red no disponible</string>
<string name="download_notifier_download_paused">Descarga detenida</string>
<string name="confirm_set_image_as_cover">Deseas fijar esta imagen como portada?</string>
<string name="confirm_set_image_as_cover">Deseas fijar esta imagen como portada?</string>
<string name="action_close">Cerrar</string>
<string name="action_move">Mover</string>
<string name="action_add_to_home_screen">Añadir a pantalla de inicio</string>
@ -335,31 +300,26 @@
<string name="action_open_log">Abrir registro</string>
<string name="action_create">Crear</string>
<string name="action_restore">Restablecer</string>
<string name="app_not_available">Aplicación no disponible</string>
<string name="short_recent_updates">Actualizaciones</string>
<string name="update_weekly">Semanalmente</string>
<string name="update_monthly">Mensualmente</string>
<string name="pref_library_update_categories">Categorías a incluir en actualización global</string>
<string name="all">Todo</string>
<string name="all">Todos</string>
<string name="amoled_theme">Tema AMOLED</string>
<string name="pref_start_screen">Pantalla inicial</string>
<string name="pref_language">Idioma</string>
<string name="system_default">Predefinido del sistema</string>
<string name="default_category">Categoría predefinida</string>
<string name="default_category_summary">Siempre preguntar</string>
<string name="pref_crop_borders">Recortar bordes</string>
<string name="pref_crop_borders">Recortar bordes</string>
<string name="pref_custom_color_filter">Utilizar filtro de color personalizado</string>
<string name="pref_read_with_volume_keys_inverted">Invertir teclas de volumen</string>
<string name="color_filter_r_value">R</string>
<string name="color_filter_g_value">G</string>
<string name="color_filter_b_value">B</string>
<string name="color_filter_a_value">A</string>
<string name="disabled">Deshabilitado</string>
<string name="disabled">Deshabilitado</string>
<string name="last_read_chapter">Ultimo capitulo leído</string>
<string name="second_to_last">Penúltimo capítulo</string>
<string name="third_to_last">Antepenúltimo capítulo</string>
@ -367,8 +327,7 @@
<string name="fifth_to_last">Quinto al último capítulo</string>
<string name="pref_download_new">Descargar capítulos nuevos</string>
<string name="pref_download_new_categories">Categorías a incluir en la descarga</string>
<string name="pref_create_backup">Crear copia de seguridad</string>
<string name="pref_create_backup">Crear copia de seguridad</string>
<string name="pref_create_backup_summ">Se puede utilizar para restaurar la biblioteca actual</string>
<string name="pref_restore_backup">Restaurar copia de seguridad</string>
<string name="pref_restore_backup_summ">Restaurar la biblioteca del archivo de copia de seguridad</string>
@ -389,25 +348,20 @@
<string name="backup_restore_content">Restaurar utiliza la fuente para obtener datos, es posible que se apliquen los costos de la operadora.
También asegúrese de haber iniciado sesión en las fuentes que lo requieren antes de la restauración.</string>
<string name="file_saved">Archivo guardado en %1$s</string>
<string name="backup_choice">Qué deseas respaldar?</string>
<string name="backup_choice">¿Qué deseas respaldar\?</string>
<string name="restoring_backup">Restaurando copia de seguridad</string>
<string name="creating_backup">Creando copia de seguridad</string>
<string name="choices_reset">Reiniciar opciones de diálogo</string>
<string name="choices_reset">Reiniciar opciones de diálogo</string>
<string name="pref_refresh_library_metadata">Actualizar metadatos de la biblioteca</string>
<string name="pref_refresh_library_metadata_summary">Actualizaciones de portadas, géneros, descripción y estado del manga</string>
<string name="pref_refresh_library_tracking">Actualizar metadatos de seguimiento</string>
<string name="pref_refresh_library_tracking_summary">Actualización de estado, puntuación y último capítulo leído en los servicios de seguimiento</string>
<string name="also_delete_chapters">También eliminar capítulos descargados</string>
<string name="also_delete_chapters">También eliminar capítulos descargados</string>
<string name="no_valid_sources">Por favor habilita al menos una fuente válida</string>
<string name="no_more_results">No hay más resultados</string>
<string name="local_source">Manga local</string>
<string name="added_to_library">El manga ha sido añadido a tu biblioteca</string>
<string name="manga_not_in_db">Este manga fue removido de la base de datos!</string>
<string name="manga_info_last_chapter_label">Ultimo capítulo</string>
<string name="circular_icon">Icono circular</string>
<string name="rounded_icon">Icono redondeado</string>
@ -417,18 +371,14 @@ También asegúrese de haber iniciado sesión en las fuentes que lo requieren an
<string name="icon_shape">Forma del icono</string>
<string name="icon_creation_fail">Error al crear acceso directo!</string>
<string name="delete_downloads_for_manga">Eliminar capítulos descargados?</string>
<string name="chapter_paused">Pausado</string>
<string name="manga_tracking_tab">Seguimiento</string>
<string name="error_category_exists">Ya existe una categoría con este nombre!</string>
<string name="snack_categories_deleted">Categorías eliminadas</string>
<string name="snack_add_to_library">Añadir manga a biblioteca?</string>
<string name="picture_saved">Imagen guardada</string>
<string name="saving_picture">Guardando imagen</string>
<string name="options">Opciones</string>
<string name="custom_filter">Filtro personalizado</string>
<string name="set_as_cover">Establecer como cubierta</string>
<string name="cover_updated">Cubierta actualizada</string>
@ -436,32 +386,26 @@ También asegúrese de haber iniciado sesión en las fuentes que lo requieren an
<string name="notification_new_chapters_text">Para %1$d títulos</string>
<string name="notification_cover_update_failed">Error al actualizar la portada</string>
<string name="file_select_icon">Seleccionar icono de acceso directo</string>
<string name="download_notifier_downloader_title">Descargador</string>
<string name="invalid_combination">Predefinido no puede ser seleccionada con otras categorías</string>
<string name="action_global_search">Búsqueda global</string>
<string name="action_display_download_badge">Icono de descargas</string>
<string name="action_open">Abrir</string>
<string name="action_login">Iniciar sesión</string>
<string name="local_source_badge">Local</string>
<string name="other_source">Otros</string>
<string name="action_global_search_hint">Búsqueda global…</string>
<string name="no_results">Ningún resultado encontrado!</string>
<string name="latest">Recientes</string>
<string name="browse">Explorar</string>
<string name="shortcut_created">Acceso directo fue agregado a la pantalla de inicio.</string>
<string name="channel_common">Común</string>
<string name="channel_library">Librería</string>
<string name="channel_downloader">Descargador</string>
<string name="information_empty_category">No tienes categorías. Toca el botón más para crear una y organizar tu librería.</string>
<string name="information_empty_category">No tienes categorías. Toca el botón más para crear una y organizar tu librería.</string>
<string name="label_migration">Migración de fuente</string>
<string name="label_extensions">Extensiones</string>
<string name="label_extension_info">"Información de extensión "</string>
<string name="label_extension_info">Información de extensión</string>
<string name="ext_details">Detalles</string>
<string name="ext_update">Actualizar</string>
<string name="ext_install">Instalar</string>
@ -469,4 +413,55 @@ También asegúrese de haber iniciado sesión en las fuentes que lo requieren an
<string name="ext_downloading">Descargando</string>
<string name="ext_installing">Instalando</string>
<string name="ext_installed">Instalado</string>
</resources>
<string name="all_lang">Todo</string>
<string name="ext_trust">Confiable</string>
<string name="ext_untrusted">No confiable</string>
<string name="ext_uninstall">Desinstalar</string>
<string name="ext_available">Disponible</string>
<string name="untrusted_extension">Extensión no confiable</string>
<string name="ext_version_info">Versión: %1$s</string>
<string name="ext_language_info">Idioma: %1$s</string>
<string name="double_tap_anim_speed_normal">Normal</string>
<string name="double_tap_anim_speed_fast">Rápida</string>
<string name="custom_hint">cantidad</string>
<string name="transition_next">Siguiente:</string>
<string name="transition_previous">Anterior:</string>
<string name="transition_no_next">No hay capítulo siguiente</string>
<string name="transition_no_previous">No hay capítulo anterior</string>
<string name="migrate">Migrar</string>
<string name="copy">Copiar</string>
<string name="migrating">Migrando…</string>
<string name="ext_preferences">Configuraciones</string>
<string name="untrusted_extension_message">Esta extensión fue firmada por una fuente no certificada y no fue activada.
\nUna extencion maliciosa puede leer cualquier credencial de inicio guardada en Tachiyomi o ejecutar código arbitrario.
\nConfiando en este certificado aceptas estos riesgos.</string>
<string name="ext_empty_preferences">No hay preferencias para editar en esta extensión</string>
<string name="double_tap_anim_speed_0">Sin animación</string>
<string name="source_search_options">Filtros de búsqueda</string>
<string name="manga_info_full_title_label">Título</string>
<string name="manga_added_library">Añadido a la biblioteca</string>
<string name="manga_removed_library">Quitado de la biblioteca</string>
<string name="manga_info_latest_data_label">Actualizado</string>
<string name="copied_to_clipboard">%1$s copiado al portapapeles</string>
<string name="source_not_installed">Fuente no instalada: %1$s</string>
<string name="custom_download">Descargar cantidad personalizada</string>
<string name="download_custom">Descargar personalizado</string>
<string name="repeating">Relectura</string>
<string name="track_status">Estado</string>
<string name="track_start_date">Empezado</string>
<string name="track_type">Tipo</string>
<string name="track_author">Autor</string>
<string name="url_not_set">La dirección del manga no está fijada, por favor haga clic en el título y seleccione el manga de nuevo</string>
<string name="transition_finished">Finalizado:</string>
<string name="transition_current">Actual:</string>
<string name="transition_pages_loading">Cargando páginas…</string>
<string name="transition_pages_error">Error al cargar páginas: %1$s</string>
<string name="migration_info">Pulse para seleccionar la fuente desde la que migrar</string>
<string name="migration_dialog_what_to_include">Seleccionar datos para incluir</string>
<string name="select">Seleccionar</string>
<string name="pref_double_tap_anim_speed">Velocidad de animación de doble toque</string>
<string name="pager_viewer">Paginado</string>
<string name="darkblue_theme">Azul oscuro</string>
<string name="pref_read_with_long_tap">Diálogo de toque largo</string>
<string name="reader_pull_up_for_more_options">Tire hacia arriba para más opciones</string>
</resources>

View File

@ -1,7 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?>
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="name">Nom</string>
<!-- Activities and fragments labels (toolbar title) -->
<string name="label_settings">Paramètres</string>
<string name="label_download_queue">File de téléchargement</string>
@ -13,7 +12,6 @@
<string name="label_categories">Catégories</string>
<string name="label_selected">Sélectionné : %1$d</string>
<string name="label_backup">Sauvegarde</string>
<!-- Actions -->
<string name="action_settings">Paramètres</string>
<string name="action_filter">Filtre</string>
@ -69,13 +67,11 @@
<string name="action_share">Partager</string>
<string name="action_save">Sauvegarder</string>
<string name="action_reset">Réinitialiser</string>
<!-- Operations -->
<string name="deleting">Suppression…</string>
<string name="loading">Chargement…</string>
<!-- Preferences -->
<!-- Subsections -->
<!-- Subsections -->
<string name="pref_category_general">Général</string>
<string name="pref_category_reader">Lecteur</string>
<string name="pref_category_downloads">Téléchargements</string>
@ -83,8 +79,7 @@
<string name="pref_category_tracking">Suivi</string>
<string name="pref_category_advanced">Avancé</string>
<string name="pref_category_about">À propos</string>
<!-- General section -->
<!-- General section -->
<string name="pref_library_columns">Manga dans la bibliothèque par colonne</string>
<string name="portrait">Portrait</string>
<string name="landscape">Paysage</string>
@ -110,7 +105,6 @@
<string name="light_theme">Thème principal</string>
<string name="dark_theme">Thème sombre</string>
<string name="pref_start_screen">Page d\'accueil</string>
<!-- Reader section -->
<string name="pref_fullscreen">Plein écran</string>
<string name="pref_lock_orientation">Verrouiller l\'orientation</string>
@ -153,9 +147,7 @@
<string name="color_filter_g_value">V</string>
<string name="color_filter_b_value">B</string>
<string name="color_filter_a_value">O</string>
<!-- Downloads section -->
<!-- Downloads section -->
<string name="pref_download_directory">Répertoire de téléchargements</string>
<string name="pref_download_only_over_wifi">Télécharger uniquement via Wi-Fi</string>
<string name="pref_remove_after_read">Supprimer après avoir lu</string>
@ -165,11 +157,9 @@
<string name="third_to_last">Du troisième au dernier chapitre</string>
<string name="fourth_to_last">Du quatrième au dernier chapitre</string>
<string name="pref_download_new">Télécharger les nouveaux chapitres</string>
<!-- Sync section -->
<!-- Sync section -->
<string name="services">Services</string>
<!-- Advanced section -->
<!-- Advanced section -->
<string name="used_cache">Utilisé : %1$s</string>
<string name="cache_deleted">Cache effacé. %1$d fichiers ont été supprimés</string>
<string name="cache_delete_error">Une erreur est survenue lors de l\'effacement du cache</string>
@ -181,8 +171,7 @@
<string name="clear_database_completed">Entrées supprimées</string>
<string name="pref_refresh_library_metadata">Actualiser les méta-données de la bibliothèque</string>
<string name="pref_refresh_library_metadata_summary">Mettre à jour les couvertures, genres, description et statut des mangas</string>
<!-- About section -->
<!-- About section -->
<string name="version">Version</string>
<string name="build_time">Date de compilation</string>
<string name="pref_enable_automatic_updates">Vérifier les mises à jour</string>
@ -190,8 +179,6 @@
<!-- ACRA -->
<string name="pref_enable_acra">Envoyer des rapports de crash</string>
<string name="pref_acra_summary">Cela aide à corriger les bugs. Aucune donnée sensible ne sera envoyée</string>
<!-- Login dialog -->
<string name="login_title">Connexion vers %1$s</string>
<string name="username">Nom d\'utilisateur</string>
@ -200,19 +187,15 @@
<string name="login">Connexion</string>
<string name="invalid_login">Erreur de connexion</string>
<string name="unknown_error">Erreur inconnue</string>
<!-- Library fragment -->
<string name="library_search_hint">Titre ou auteur…</string>
<string name="confirm_delete_manga">Êtes-vous sûr de vouloir supprimer les mangas sélectionnés ?</string>
<!-- Catalogue fragment -->
<string name="source_requires_login">Cette source demande de vous identifier</string>
<string name="select_source">Sélectionner une source</string>
<string name="no_valid_sources">Veuillez au moins activer une source valide</string>
<!-- Manga activity -->
<string name="manga_not_in_db">Ce manga a été supprimé de la base de données !</string>
<!-- Manga info fragment -->
<string name="manga_detail_tab">Info</string>
<string name="description">Description</string>
@ -232,7 +215,6 @@
<string name="shortcut_title">Titre de raccourci</string>
<string name="icon_shape">Forme de l\'icône</string>
<string name="icon_creation_fail">Échec de la création du raccourci !</string>
<!-- Manga chapters fragment -->
<string name="manga_chapters_tab">Chapitres</string>
<string name="display_mode_chapter">Chapitre %1$s</string>
@ -251,34 +233,28 @@
<string name="download_5">Télécharger les 5 prochains chapitres</string>
<string name="download_all">Tout télécharger</string>
<string name="download_unread">Télécharger non-lu</string>
<!-- MyAnimeList fragment -->
<string name="manga_tracking_tab">Suivi</string>
<string name="reading">En lecture</string>
<string name="reading">En cours</string>
<string name="completed">Complété</string>
<string name="dropped">Abandonné</string>
<string name="on_hold">En pause</string>
<string name="plan_to_read">Lecture planifiée</string>
<string name="score">Ponctuation</string>
<string name="plan_to_read">A lire</string>
<string name="score">Note</string>
<string name="title">Titre</string>
<string name="status">Statut</string>
<string name="chapters">Chapitres</string>
<!-- Category activity -->
<string name="error_category_exists">Une catégorie avec ce nom existe déjà !</string>
<!-- Dialog option with checkbox view -->
<string name="dialog_with_checkbox_remove_description">Cela enlèvera la date de lecture de ce chapitre. Êtes-vous sûr ?</string>
<string name="dialog_with_checkbox_reset">Réinitialiser tous les chapitres de ce manga</string>
<!-- SnackBar -->
<string name="snack_add_to_library">Ajouter ce manga à la bibliothèque ?</string>
<!-- Image notifier -->
<string name="picture_saved">Image sauvegardée</string>
<string name="saving_picture">Sauvegarde de l\'image</string>
<string name="options">Options</string>
<!-- Reader activity -->
<string name="custom_filter">Filtre personnalisé</string>
<string name="set_as_cover">Ajouter comme couverture</string>
@ -290,20 +266,16 @@
<string name="chapter_subtitle">Chapitre %1$s</string>
<string name="no_next_chapter">Chapitre suivant non trouvé</string>
<string name="no_previous_chapter">Chapitre précédent non trouvé</string>
<string name="decode_image_error">L\'image n\'a pas pu être chargée.\nEssayez de changer le décodeur d\'image ou une des autres options ci-après</string>
<string name="decode_image_error">L\'image n\'a pas pu être décodée</string>
<string name="confirm_update_manga_sync">Mettre à jour le dernier chapitre lu dans les services activés à %1$d ?</string>
<string name="confirm_set_image_as_cover">Voulez-vous mettre cette image comme couverture ?</string>
<string name="viewer_for_this_series">Lecteur pour cette série</string>
<!-- Backup fragment -->
<string name="backup">Sauvegarder</string>
<!-- Recent manga fragment -->
<string name="recent_manga_source">%1$s - Ch.%2$s</string>
<!-- Downloads activity and service -->
<string name="download_queue_error">Une erreur est survenue lors du téléchargement des chapitres. Vous pouvez recommencer à nouveau dans la section téléchargements</string>
<!-- Library update service notifications -->
<string name="notification_update_progress">Progression mise à jour: %1$d/%2$d</string>
<string name="notification_new_chapters">Des nouveaux chapitres ont été trouvés</string>
@ -312,12 +284,10 @@
<string name="notification_not_connected_to_ac_body">Non branché</string>
<string name="notification_no_connection_title">Synchronisation annulée</string>
<string name="notification_no_connection_body">Connexion non disponible</string>
<!-- File Picker Titles -->
<string name="file_select_cover">Sélectionner l\'image de couverture</string>
<string name="file_select_backup">Sélectionner fichier de sauvegarde</string>
<string name="file_select_icon">Sélectionner une icône de raccourci</string>
<!--UpdateCheck-->
<string name="update_check_title">Nouvelle mise à jour disponible !</string>
<string name="update_check_confirm">Télécharger</string>
@ -325,24 +295,20 @@
<string name="update_check_no_new_updates">Aucune mise à jour disponible</string>
<string name="update_check_download_started">Téléchargement commencé</string>
<string name="update_check_look_for_updates">Vérification des mises à jour</string>
<!--UpdateCheck Notifications-->
<string name="update_check_notification_file_download">Télécharger la mise à jour</string>
<string name="update_check_notification_download_in_progress">Téléchargement en cours</string>
<string name="update_check_notification_download_complete">Téléchargement terminé</string>
<string name="update_check_notification_download_error">Erreur lors du téléchargement</string>
<string name="update_check_notification_update_available">Mise à jour disponible</string>
<!--Content Description-->
<string name="description_backdrop">Image de fond du manga</string>
<string name="description_cover">Couverture du manga</string>
<!-- Information Text -->
<string name="information_no_downloads">Aucun téléchargement</string>
<string name="information_no_recent">Aucun chapitre récent</string>
<string name="information_no_recent_manga">Aucun manga lu récemment</string>
<string name="information_empty_library">Votre bibliothèque est vide, vous pouvez ajouter des séries à votre bibliothèque depuis le Catalogue.</string>
<!-- Download Notification -->
<string name="download_notifier_downloader_title">Téléchargement</string>
<string name="download_notifier_title_error">Erreur</string>
@ -369,10 +335,9 @@
<string name="no_more_results">Pas d\'autres résultats</string>
<string name="snack_categories_deleted">Catégories supprimées</string>
<string name="action_undo">Annuler</string>
<string name="categories">Catégories</string>
<string name="categories">Catégories</string>
<string name="manga">Manga</string>
<string name="history">Historique</string>
<string name="action_close">Fermer</string>
<string name="action_move">Déplacer</string>
<string name="action_export">Exporter</string>
@ -383,15 +348,12 @@
<string name="amoled_theme">Thème AMOLED</string>
<string name="default_category">Catégorie par défaut</string>
<string name="download_notifier_download_paused">Téléchargement en pause</string>
<string name="local_source">Manga locaux</string>
<string name="local_source">Manga locaux</string>
<string name="added_to_library">Ce manga a été ajouté à votre bibliothèque</string>
<string name="manga_info_last_chapter_label">Dernier chapitre</string>
<string name="chapter_paused">En pause</string>
<string name="action_open_log">Ouvre le fichier journal</string>
<string name="action_restore">Restaurer</string>
<string name="pref_backup_directory">Dossier de sauvegarde</string>
<string name="pref_backup_service_category">Service</string>
<string name="source_not_found">Source introuvable</string>
@ -401,15 +363,12 @@
<string name="backup_choice">Que voulez-vous sauvegarder ?</string>
<string name="invalid_combination">Le défaut ne peut pas être selectionné avec des autres catégories</string>
<string name="delete_downloads_for_manga">Supprimer les chapitres téléchargés ?</string>
<string name="notification_new_chapters_text">Pour %1$s chapitres</string>
<string name="track">Suivi</string>
<string name="action_sort_total">Nombre de chapitres</string>
<string name="short_recent_updates">Actualisations</string>
<string name="pref_download_new_categories">Catégories à inclure dans le téléchargement</string>
<string name="pref_create_backup">Créer une sauvegarde</string>
<string name="pref_create_backup">Créer une sauvegarde</string>
<string name="pref_create_backup_summ">Peut être utilisé pour restaurer la bibliothèque actuelle</string>
<string name="pref_restore_backup">Restaurer une sauvegarde</string>
<string name="pref_restore_backup_summ">Restaurer la bibliothèque à partir d\'un fichier de sauvegarde</string>
@ -424,36 +383,29 @@
%2$s erreurs trouvées.</string>
<string name="restoring_backup">Restauration de sauvegarde en cours</string>
<string name="creating_backup">Création de sauvegarde en cours</string>
<string name="pref_refresh_library_tracking">Actualiser les métadonnées de suivi</string>
<string name="pref_refresh_library_tracking">Actualiser les métadonnées de suivi</string>
<string name="pref_refresh_library_tracking_summary">Actualise le statut, appréciation et dernier chapitre lu des services de suivi</string>
<string name="also_delete_chapters">Efface aussi les chapitres téléchargés</string>
<string name="also_delete_chapters">Efface aussi les chapitres téléchargés</string>
<string name="default_category_summary">Toujours demander</string>
<string name="pref_read_with_volume_keys_inverted">Inverse les boutons de volume</string>
<string name="pref_read_with_volume_keys_inverted">Inverser les boutons de volume</string>
<string name="pref_crop_borders">Rogner les bordures</string>
<string name="backup_restore_content">La restauration utilise la source pour obtenir des données, des frais de l\'opérateur peuvent s\'appliquer.
Assurez-vous que vous êtes connecté à des sources qui le demande avant de commencer la restauration.</string>
<string name="action_global_search">Recherche globale</string>
<string name="action_open">Ouvrir</string>
<string name="action_login">Connexion</string>
<string name="other_source">Autre</string>
<string name="action_global_search_hint">Recherche globale…</string>
<string name="no_results">Aucun résultat !</string>
<string name="latest">Récents</string>
<string name="browse">Explorer</string>
<string name="shortcut_created">Un raccourci a été ajouté à la page d\'accueil.</string>
<string name="channel_library">Bibliothèque</string>
<string name="action_display_download_badge">Badges des téléchargements</string>
<string name="local_source_badge">Local</string>
<string name="channel_common">Général</string>
<string name="channel_downloader">Téléchargeur</string>
<string name="information_empty_category">Vous n\'avez aucune catégorie. Appuyez sur le bouton plus pour en créeer un pour organiser votre bibliothèque.</string>
<string name="information_empty_category">Vous n\'avez aucune catégorie. Appuyez sur le bouton plus pour en créeer un pour organiser votre bibliothèque.</string>
<string name="label_extensions">Extensions</string>
<string name="ext_details">Détails</string>
<string name="ext_update">Mettre à jour</string>
@ -471,11 +423,10 @@ Assurez-vous que vous êtes connecté à des sources qui le demande avant de com
\nUne extension malveillante peut lire les certificats de connections sauvegardés sur Tachiyomi ou exécuter du code arbitraire.
\n
\nEn faisant confiance à ce certificat vous acceptez ces risques.</string>
<string name="ext_version_info">Version: %1$s</string>
<string name="ext_language_info">Langue: %1$s</string>
<string name="ext_version_info">Version : %1$s</string>
<string name="ext_language_info">Langue : %1$s</string>
<string name="ext_empty_preferences">Aucune préférence n\'est disponible pour cette extension</string>
<string name="pref_double_tap_anim_speed">Vitesse d\'animation du double-clic</string>
<string name="pref_double_tap_anim_speed">Vitesse d\'animation du double-clic</string>
<string name="double_tap_anim_speed_0">Sans animation</string>
<string name="double_tap_anim_speed_normal">Normale</string>
<string name="double_tap_anim_speed_fast">Rapide</string>
@ -486,7 +437,6 @@ Assurez-vous que vous êtes connecté à des sources qui le demande avant de com
<string name="manga_info_latest_data_label">Mis à jour</string>
<string name="copied_to_clipboard">%1$s a été copié dans le presse papier</string>
<string name="source_not_installed">Sources non installées: %1$s</string>
<string name="custom_download">Télécharger une quantité personnalisée</string>
<string name="custom_hint">Quantité</string>
<string name="download_custom">Téléchargement personalisé</string>
@ -495,7 +445,29 @@ Assurez-vous que vous êtes connecté à des sources qui le demande avant de com
<string name="track_type">Type</string>
<string name="track_author">Auteur</string>
<string name="url_not_set">L\'url du manga n\'a pas été entrée, veuillez cliquer sur le titre et selectionner le manga</string>
<string name="migration_dialog_what_to_include">Sélectionner les données à inclure</string>
<string name="select">Sélectionner</string>
</resources>
<string name="label_migration">Migration de source</string>
<string name="label_extension_info">Information complémentaire</string>
<string name="all_lang">Toutes</string>
<string name="ext_trust">Fiable</string>
<string name="ext_untrusted">Non fiable</string>
<string name="pager_viewer">Pager</string>
<string name="repeating">Relecture</string>
<string name="transition_finished">A jour :</string>
<string name="transition_current">En cours :</string>
<string name="transition_next">Suivant :</string>
<string name="transition_previous">Précédent :</string>
<string name="transition_no_next">C\'était le dernier chapitre</string>
<string name="transition_no_previous">Il n\'y a pas de chapitre précédent</string>
<string name="transition_pages_loading">Chargement des pages…</string>
<string name="transition_pages_error">Échec du chargement des pages : %1$s</string>
<string name="migration_info">Appuyer pour sélectionner la source à déplacer</string>
<string name="migrate">Déplacement</string>
<string name="copy">Copier</string>
<string name="migrating">En cours de déplacement…</string>
<string name="darkblue_theme">Bleu foncé</string>
<string name="pref_read_with_long_tap">Menu contextuel (appui prolongé)</string>
<string name="reader_pull_up_for_more_options">Plus d\'options en défilant</string>
</resources>

View File

@ -1,11 +1,11 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources><string name="name">नाम</string>
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="name">नाम</string>
<string name="categories">श्रेणियाँ</string>
<string name="manga">मंगा</string>
<string name="manga">ंगा</string>
<string name="chapters">अध्याय</string>
<string name="track">पदचिह्न</string>
<string name="history">इतिहास</string>
<string name="label_settings">सेटिंग्स</string>
<string name="label_download_queue">डाउनलोड कतार</string>
<string name="label_library">मेरा पुस्तकालय</string>
@ -14,10 +14,8 @@
<string name="label_recent_updates">पुस्तकालय अद्यतन</string>
<string name="label_latest_updates">नवीनतम अद्यतन</string>
<string name="label_categories">श्रेणियाँ</string>
<string name="label_selected">श्रेणियाँ</string>
<string name="label_selected">श्रेणियाँ %1$d</string>
<string name="label_backup">बैकअप</string>
<string name="action_settings">सेटिंग</string>
<string name="action_filter">फिल्टर</string>
<string name="action_filter_downloaded">डाउनलोड किया हुआ</string>
@ -83,14 +81,11 @@
<string name="action_create">सर्जन करना</string>
<string name="action_restore">पुनःस्थापन करे</string>
<string name="action_open">खुला हुआ</string>
<string name="action_login">ॉग इ</string>
<string name="action_login">ोगि</string>
<string name="deleting">हटाया जा रहा है…</string>
<string name="loading">लोड हो रहा है…</string>
<string name="app_not_available">एप्पलीकेशन उपलब्ध नहीं है</string>
<string name="short_recent_updates">अद्यतन</string>
<string name="pref_category_general">सामान्य</string>
<string name="pref_category_reader">पाठमाला</string>
<string name="pref_category_downloads">डाउनलोड</string>
@ -98,8 +93,7 @@
<string name="pref_category_tracking">पदचिह्न</string>
<string name="pref_category_advanced">विकसित</string>
<string name="pref_category_about">संबंध में</string>
<string name="pref_library_columns">मंगा पुस्तक संग्रह पंक्ति के हिसाब से</string>
<string name="pref_library_columns">मंगा पुस्तक संग्रह पंक्ति के हिसाब से</string>
<string name="portrait">चित्र</string>
<string name="landscape">लैंडस्केप</string>
<string name="default_columns">डिफ़ॉल्ट</string>
@ -131,8 +125,7 @@
<string name="system_default">डिफ़ॉल्ट प्रणाली</string>
<string name="default_category">डिफ़ॉल्ट श्रेणी</string>
<string name="default_category_summary">हमेशा पूछे</string>
<string name="pref_fullscreen">पूर्ण स्क्रीन</string>
<string name="pref_fullscreen">पूर्ण स्क्रीन</string>
<string name="pref_lock_orientation">उन्मुखीकरण बंद करे</string>
<string name="pref_page_transitions">पृष्ठ संक्रमण</string>
<string name="pref_show_page_number">पृष्ठ संख्या दिखाएं</string>
@ -175,9 +168,7 @@
<string name="color_filter_g_value">G</string>
<string name="color_filter_b_value">B</string>
<string name="color_filter_a_value">A</string>
<string name="pref_download_directory">डाउनलोड निर्देशिका</string>
<string name="pref_download_directory">डाउनलोड निर्देशिका</string>
<string name="pref_download_only_over_wifi">वाई - फाई पर ही डाउनलोड करे</string>
<string name="pref_remove_after_marked_as_read">पढ़ा जाने चिह्नित होने पर हटाएं</string>
<string name="pref_remove_after_read">पढ़ने के बाद हटा दें</string>
@ -190,9 +181,7 @@
<string name="fifth_to_last">अंतिम अध्याय के लिए पांचवां</string>
<string name="pref_download_new">नए अध्याय डाउनलोड करें</string>
<string name="pref_download_new_categories">श्रेणियाँ डाउनलोड में शामिल करने के लिए</string>
<string name="services">सेवाएं</string>
<string name="services">सेवाएं</string>
<string name="backup">बैकअप</string>
<string name="pref_create_backup">बैकअप बनाये</string>
<string name="pref_create_backup_summ">वर्तमान पुस्तकालय को पुनर्स्थापित करने के लिए उपयोग किया जा सकता है</string>
@ -218,8 +207,7 @@
<string name="backup_choice">आप बैकअप के लिए क्या चाहते हैं?</string>
<string name="restoring_backup">बैकअप को पुनर्स्थापित करना</string>
<string name="creating_backup">बैकअप बनाना</string>
<string name="pref_clear_chapter_cache">अध्याय कैश साफ़ करें</string>
<string name="pref_clear_chapter_cache">अध्याय कैश साफ़ करें</string>
<string name="used_cache">उपयोग किया गया: %1$s</string>
<string name="cache_deleted">"कैश साफ़ किया गया %1$d फ़ाइलों को हटा दिया गया है"</string>
<string name="cache_delete_error">कैश साफ़ करने के दौरान एक त्रुटि हुई</string>
@ -234,15 +222,12 @@
<string name="pref_refresh_library_metadata_summary">अपडेट कवर, शैलियों, विवरण और मंगा स्थिति की जानकारी</string>
<string name="pref_refresh_library_tracking">ट्रैकिंग मेटाडेटा रीफ़्रेश करें</string>
<string name="pref_refresh_library_tracking_summary">अपडेट की स्थिति, स्कोर और अंतिम अध्याय ट्रैकिंग सेवाओं से पढ़ें</string>
<string name="version">संस्करण</string>
<string name="version">संस्करण</string>
<string name="build_time">निर्माण समय</string>
<string name="pref_enable_automatic_updates">अद्यतन के लिए जाँच</string>
<string name="pref_enable_automatic_updates_summary">स्वचालित रूप से एप्लिकेशन अपडेट की जांच करें</string>
<string name="pref_enable_acra">क्रैश रिपोर्ट भेजें</string>
<string name="pref_acra_summary">किसी भी बग को ठीक करने में मदद करता है कोई संवेदनशील डेटा नहीं भेजा जाएगा</string>
<string name="login_title">%1$s के लिए लॉगिन</string>
<string name="username">उपयोगकर्ता नाम</string>
<string name="password">पासवर्ड</string>
@ -251,13 +236,11 @@
<string name="login_success">सफलतापूर्ण लॉग इन</string>
<string name="invalid_login">लॉग इन त्रुटि</string>
<string name="unknown_error">अज्ञात त्रुटि</string>
<string name="library_search_hint">शीर्षक या लेखक …</string>
<string name="updating_category">श्रेणी अपडेट कर रहा है</string>
<string name="local_source_badge">लोकल</string>
<string name="confirm_delete_manga">क्या आप वाकई चयनित मंगा को हटाना चाहते हैं?</string>
<string name="also_delete_chapters">डाउनलोड किए गए अध्याय भी हटाएं</string>
<string name="source_requires_login">इस स्रोत के लिए आपको प्रवेश करना होगा</string>
<string name="select_source">किसी स्रोत का चयन करें</string>
<string name="no_valid_sources">कृपया कम से कम एक वैध स्रोत सक्षम करें</string>
@ -270,9 +253,7 @@
<string name="no_results">कोई परिणाम नहीं मिला!</string>
<string name="latest">नवीनतम</string>
<string name="browse">ब्राउज</string>
<string name="manga_not_in_db">यह मंगा डेटाबेस से हटा दिया गया था!</string>
<string name="manga_detail_tab">जानकारी</string>
<string name="description">विवरण</string>
<string name="ongoing">चल रही है</string>
@ -295,7 +276,6 @@
<string name="icon_shape">चिह्न आकार</string>
<string name="icon_creation_fail">शॉर्टकट बनाने में विफल!</string>
<string name="delete_downloads_for_manga">डाउनलोड किए गए अध्याय हटाएं?</string>
<string name="manga_chapters_tab">अध्याय</string>
<string name="manga_chapter_no_title">कोई शीर्षक नहीं</string>
<string name="display_mode_chapter">अध्याय %1$s</string>
@ -318,7 +298,6 @@
<string name="download_all">सभी डाउनलोड करे</string>
<string name="download_unread">अपठित डाउनलोड करें</string>
<string name="confirm_delete_chapters">क्या आप वाकई चयनित अध्यायों को हटाना चाहते हैं?</string>
<string name="manga_tracking_tab">पदचिह्न</string>
<string name="reading">पठन</string>
<string name="completed">समाप्त</string>
@ -328,19 +307,14 @@
<string name="score">स्कोर</string>
<string name="title">शीर्षक</string>
<string name="status">स्थिति</string>
<string name="error_category_exists">इस नाम के साथ एक श्रेणी पहले से मौजूद है!</string>
<string name="snack_categories_deleted">श्रेणियाँ हटाई गयी</string>
<string name="dialog_with_checkbox_remove_description">यह इस अध्याय की पठन तिथि को निकाल देगा क्या आप निश्चित है?</string>
<string name="dialog_with_checkbox_reset">इस मंगा के लिए सभी अध्यायों को रीसेट करें</string>
<string name="snack_add_to_library">लाइब्रेरी में मंगा जोड़ें?</string>
<string name="picture_saved">चित्र सहेजा गया</string>
<string name="saving_picture">चित्र सहेजा जा रहा है</string>
<string name="options">विकल्प</string>
<string name="custom_filter">इच्छा अनुसार फिल्टर</string>
<string name="set_as_cover">कवर के रूप में सेट करें</string>
<string name="cover_updated">कवर अपडेट किया गया</string>
@ -351,16 +325,12 @@
<string name="chapter_subtitle">अध्याय %1$s</string>
<string name="no_next_chapter">अगले अध्याय नहीं मिला</string>
<string name="no_previous_chapter">पिछला अध्याय नहीं मिला</string>
<string name="decode_image_error">चित्र लोड नहीं किया जा सका
\nछवि डिकोडर को बदलने या नीचे दिए गए विकल्पों में से एक को आज़माएं</string>
<string name="decode_image_error">छवि को डीकोड नहीं किया जा सका</string>
<string name="confirm_update_manga_sync">पिछले अध्याय को सक्षम सेवाओं में %1$d तक पढ़ा है?</string>
<string name="confirm_set_image_as_cover">क्या आप इस छवि को कवर के रूप में सेट करना चाहते हैं?</string>
<string name="viewer_for_this_series">इस श्रृंखला के लिए दर्शक</string>
<string name="recent_manga_source">%1$s - Ch.%2$s</string>
<string name="download_queue_error">अध्याय डाउनलोड करते समय एक त्रुटि हुई आप डाउनलोड अनुभाग में पुनः प्रयास कर सकते हैं</string>
<string name="notification_update_progress">अपडेट प्रगति: %1$d/%2$d</string>
<string name="notification_new_chapters">नए अध्याय पाए गए</string>
<string name="notification_new_chapters_text">%1$d शीर्षक के लिए</string>
@ -370,33 +340,27 @@
<string name="notification_not_connected_to_ac_body">एसी बिजली से जुड़ा नहीं है</string>
<string name="notification_no_connection_title">समन्वयन रद्द</string>
<string name="notification_no_connection_body">कनेक्शन उपलब्ध नहीं है</string>
<string name="file_select_cover">कवर छवि का चयन करें</string>
<string name="file_select_backup">बैकअप फ़ाइल का चयन करें</string>
<string name="file_select_icon">शॉर्टकट आइकन चुनें</string>
<string name="update_check_title">नया अद्यतन उपलब्ध है!</string>
<string name="update_check_confirm">डाउनलोड</string>
<string name="update_check_ignore">नज़रअंदाज़ करे</string>
<string name="update_check_no_new_updates">कोई नया अद्यतन उपलब्ध नहीं है</string>
<string name="update_check_download_started">डाउनलोड शुरू</string>
<string name="update_check_look_for_updates">अद्यतन ढूंढ रहे हैं</string>
<string name="update_check_notification_file_download">अद्यतन डाउनलोड करे</string>
<string name="update_check_notification_download_in_progress">डाउनलोड जारी है</string>
<string name="update_check_notification_download_complete">डाउनलोड सम्पन्न हुआ</string>
<string name="update_check_notification_download_error">डाउनलोड त्रुटि</string>
<string name="update_check_notification_update_available">अद्यतन उपलब्ध है</string>
<string name="description_backdrop">मैंगा की पृष्ठभूमि छवि</string>
<string name="description_cover">मंगा का आवरण</string>
<string name="information_no_downloads">कोई डाउनलोड नहीं है</string>
<string name="information_no_recent">हाल के कोई अध्याय नहीं है</string>
<string name="information_no_recent_manga">हाल ही में मंगा पढ़ा नहीं है</string>
<string name="information_empty_library">आपकी लाइब्रेरी खाली है, आप कैटलॉग से अपनी लाइब्रेरी में श्रृंखला जोड़ सकते हैं।</string>
<string name="information_empty_category">आपके पास कोई श्रेणियां नहीं हैं अपने पुस्तकालय के आयोजन के लिए एक बनाने के लिए प्लस बटन को दबाएं।</string>
<string name="download_notifier_downloader_title">डाउनलोडर</string>
<string name="download_notifier_title_error">त्रुटि</string>
<string name="download_notifier_unkown_error">अध्याय डाउनलोड करते समय एक अनपेक्षित त्रुटि हुई</string>
@ -405,15 +369,12 @@
<string name="download_notifier_text_only_wifi">कोई वाई-फ़ाई कनेक्शन उपलब्ध नहीं है</string>
<string name="download_notifier_no_network">कोई नेटवर्क कनेक्शन उपलब्ध नहीं है</string>
<string name="download_notifier_download_paused">डाउनलोड रोक दिया गया</string>
<string name="channel_common">सामान्य</string>
<string name="channel_library">पुस्तकालय</string>
<string name="channel_downloader">डाउनलोडर</string>
<string name="label_migration">स्रोत प्रवास</string>
<string name="label_migration">स्रोत प्रवास</string>
<string name="label_extensions">विस्तार</string>
<string name="label_extension_info">विस्तार की जानकारी</string>
<string name="all_lang">सभी</string>
<string name="ext_details">विवरण</string>
<string name="ext_update">अद्यतन</string>
@ -434,8 +395,7 @@
<string name="ext_version_info">संस्करण: %1$s</string>
<string name="ext_language_info">भाषा: %1$s</string>
<string name="ext_empty_preferences">इस एक्सटेंशन के लिए कोई प्राथमिकताएं संपादित नहीं हैं</string>
<string name="pref_double_tap_anim_speed">डबल टैप एनीमेशन गति</string>
<string name="pref_double_tap_anim_speed">डबल टैप एनीमेशन गति</string>
<string name="double_tap_anim_speed_0">कोई एनीमेशन नहीं</string>
<string name="double_tap_anim_speed_normal">साधारण</string>
<string name="double_tap_anim_speed_fast">उपवास</string>
@ -445,7 +405,6 @@
<string name="manga_removed_library">लाइब्रेरी से निकाला गया</string>
<string name="manga_info_latest_data_label">अपडेट किया गया</string>
<string name="copied_to_clipboard">%1$s क्लिपबोर्ड पर नकल</string>
<string name="custom_download">कस्टम राशि डाउनलोड करें</string>
<string name="custom_hint">रकम</string>
<string name="download_custom">कस्टम डाउनलोड करें</string>
@ -455,15 +414,23 @@
<string name="migrate">प्रवास</string>
<string name="copy">नकल</string>
<string name="migrating">प्रवास हो रहा है…</string>
<string name="pager_viewer">पृष्ठक</string>
<string name="source_not_installed">स्रोत स्थापित नहीं है : %1$s</string>
<string name="repeating">फिर से पढाना</string>
<string name="track_status">स्थिति</string>
<string name="track_start_date">शुरू कर दिया है</string>
<string name="track_type">प्रकार</string>
<string name="track_author">लेखक</string>
<string name="url_not_set">मंगा यूआरएल सेट नहीं है कृपया शीर्षक पर क्लिक करें और फिर मंगा का चयन करें</string>
</resources>
<string name="transition_finished">समाप्त:</string>
<string name="transition_current">प्रचलित:</string>
<string name="transition_next">अगला:</string>
<string name="transition_previous">पिछला:</string>
<string name="transition_no_next">कोई अगला अध्याय नहीं है</string>
<string name="transition_no_previous">कोई पिछला अध्याय नहीं है</string>
<string name="transition_pages_loading">पेज लोड हो रहे है …</string>
<string name="transition_pages_error">पृष्ठों को लोड करने में विफल है: %1$s</string>
<string name="darkblue_theme">गहरा नीला</string>
<string name="reader_pull_up_for_more_options">अधिक विकल्पों के लिए खींचो</string>
<string name="pref_read_with_long_tap">संवाद के लिए लंबी प्रेस</string>
</resources>

View File

@ -1,19 +1,17 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources><string name="name">Név</string>
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="name">Név</string>
<string name="categories">Kategóriák</string>
<string name="manga">Manga</string>
<string name="chapters">Fejezetek</string>
<string name="track">Nyilvántartás</string>
<string name="history">Előzmények</string>
<string name="label_settings">Beállítások</string>
<string name="label_recent_manga">Legutóbb olvasott</string>
<string name="label_catalogues">Katalógusok</string>
<string name="label_latest_updates">Legutóbbi frissítések</string>
<string name="label_categories">Kategóriák</string>
<string name="label_backup">Biztonsági mentés</string>
<string name="action_settings">Beállítások</string>
<string name="action_search">Keresés</string>
<string name="action_show_downloaded">Letöltve</string>
@ -31,10 +29,8 @@
<string name="action_undo">Visszavonás</string>
<string name="action_export">Exportálás</string>
<string name="action_login">Bejelentkezés</string>
<string name="deleting">Törlés…</string>
<string name="loading">Betöltés…</string>
<string name="pref_category_general">Általános</string>
<string name="pref_category_reader">Olvasó</string>
<string name="pref_category_downloads">Letöltések</string>
@ -42,8 +38,7 @@
<string name="pref_category_tracking">Nyilvántartás</string>
<string name="pref_category_advanced">Speciális</string>
<string name="pref_category_about">Névjegy</string>
<string name="pref_library_columns">Könyvtár: mangák száma soronként</string>
<string name="pref_library_columns">Könyvtár: mangák száma soronként</string>
<string name="portrait">Álló</string>
<string name="landscape">Fekvő</string>
<string name="default_columns">Alapértelmezett</string>
@ -74,8 +69,7 @@
<string name="system_default">Rendszer alapértelmezése</string>
<string name="default_category">Alapértelmezett kategória</string>
<string name="default_category_summary">Mindig kérdezze</string>
<string name="pref_fullscreen">Teljes képernyő</string>
<string name="pref_fullscreen">Teljes képernyő</string>
<string name="pref_show_page_number">Oldalszám megjelenítése</string>
<string name="pref_keep_screen_on">Képernyő bekapcsolva tartása</string>
<string name="pref_reader_navigation">Lapozás</string>
@ -94,9 +88,7 @@
<string name="score">Értékelés</string>
<string name="title">Cím</string>
<string name="status">Állapot</string>
<string name="options">Beállítások</string>
<string name="chapter_progress">%1$d oldal</string>
<string name="chapter_subtitle">%1$s. fejezet</string>
<string name="no_next_chapter">Nem található a következő fejezet</string>
@ -158,7 +150,6 @@
<string name="action_open">Megnyitás</string>
<string name="app_not_available">Az alkalmazás nem érhető el</string>
<string name="short_recent_updates">Frissítések</string>
<string name="pref_auto_update_manga_sync">Olvasás után a fejezetek szinkronizálása</string>
<string name="pref_lock_orientation">Elforgatás zárolása</string>
<string name="pref_page_transitions">Áttűnés lapozáskor</string>
@ -174,4 +165,9 @@
<string name="vertical_viewer">Függőlegesen</string>
<string name="webtoon_viewer">Folytonos</string>
<string name="scale_type_fit_screen">Képernyőhöz igazítás</string>
</resources>
<string name="label_migration">Forrás váltása</string>
<string name="label_extensions">Bővítmények</string>
<string name="ext_untrusted">Nem megbízható</string>
<string name="ext_uninstall">Eltávolítás</string>
<string name="ext_preferences">Beállítások</string>
</resources>

View File

@ -339,8 +339,7 @@
<string name="chapter_subtitle">Bab %1$s</string>
<string name="no_next_chapter">Bab berikutnya tidak ditemukan</string>
<string name="no_previous_chapter">Bab sebelumnya tidak ditemukan</string>
<string name="decode_image_error">Gambar tidak dapat dimuat.
\nCoba ganti dekoder gambar atau dengan salah satu opsi di bawah ini</string>
<string name="decode_image_error">Gambar tidak bisa diterjemahkan</string>
<string name="confirm_update_manga_sync">Perbaharui bab terakhir baca di layanan yang diaktifkan ke %1$d?</string>
<string name="confirm_set_image_as_cover">Apakah anda ingin mengatur gambar ini sebagai sampul?</string>
<string name="viewer_for_this_series">Penonton untuk seri yang ini</string>
@ -468,4 +467,14 @@
<string name="track_author">Penulis</string>
<string name="url_not_set">Url Manga belum siap, silahkan klik judul dan pilih manga lagi</string>
<string name="darkblue_theme">Biru gelap</string>
<string name="transition_finished">Selesai:</string>
<string name="transition_current">Saat ini:</string>
<string name="transition_next">Selanjutnya:</string>
<string name="transition_previous">Sebelumnya:</string>
<string name="transition_no_next">Tidak ada chapter lanjutannya</string>
<string name="transition_no_previous">Tidak ada chapter sebelumnya</string>
<string name="transition_pages_loading">Memuat halaman…</string>
<string name="transition_pages_error">Gagal memuat halaman: %1$s</string>
</resources>

View File

@ -6,7 +6,7 @@
<string name="label_settings">Impostazioni</string>
<string name="label_download_queue">Coda dei download</string>
<string name="label_library">La mia libreria</string>
<string name="label_recent_manga">Recenti</string>
<string name="label_recent_manga">Letti di recente</string>
<string name="label_catalogues">Cataloghi</string>
<string name="label_recent_updates">Aggiornamenti libreria</string>
<string name="label_latest_updates">Ultimi aggiornamenti</string>
@ -23,8 +23,8 @@
<string name="action_filter_read">Letti</string>
<string name="action_filter_empty">Elimina filtri</string>
<string name="action_sort_alpha">Alfabeticamente</string>
<string name="action_sort_last_read">Ultimo letto</string>
<string name="action_sort_last_updated">Ultimo aggiornato</string>
<string name="action_sort_last_read">Ultimi letti</string>
<string name="action_sort_last_updated">Ultimi aggiornati</string>
<string name="action_search">Ricerca</string>
<string name="action_select_all">Seleziona tutto</string>
<string name="action_mark_as_read">Segna come letto</string>
@ -296,7 +296,7 @@
<string name="chapter_subtitle">Capitolo %1$s</string>
<string name="no_next_chapter">Capitolo successivo non trovato</string>
<string name="no_previous_chapter">Capitolo precedente non trovato</string>
<string name="decode_image_error">L\'immagine non può essere caricata.\nProva a cambiare il decoder immagini o con una delle opzioni più in basso</string>
<string name="decode_image_error">L\'immagine non può essere decodificata</string>
<string name="confirm_update_manga_sync">Aggiornare nei servizi abilitati l\'ultimo capitolo letto a %1$d?</string>
<string name="confirm_set_image_as_cover">Vuoi impostare questa immagine come copertina?</string>
<string name="viewer_for_this_series">Visualizzatore per questa serie</string>
@ -437,8 +437,8 @@
<string name="action_global_search">Ricerca globale</string>
<string name="action_display_download_badge">Segnalatore capitoli scaricati</string>
<string name="action_reset">Azzera</string>
<string name="action_display_download_badge">Indicatori capitoli scaricati</string>
<string name="action_reset">Reimposta</string>
<string name="action_open">Apri</string>
<string name="action_login">Accesso</string>
@ -447,7 +447,7 @@
<string name="ext_update">Aggiorna</string>
<string name="ext_install">Installa</string>
<string name="ext_pending">In coda</string>
<string name="ext_downloading">In corso</string>
<string name="ext_downloading">Download in corso</string>
<string name="ext_installing">Installazione in corso</string>
<string name="ext_installed">Installato</string>
<string name="ext_trust">Mi fido</string>
@ -477,7 +477,7 @@
<string name="invalid_combination">Predefinito non può essere selezionato con altre categorie</string>
<string name="action_global_search_hint">Ricerca globale…</string>
<string name="no_results">Nessun risultato!</string>
<string name="latest">Ultimo</string>
<string name="latest">Ultimi</string>
<string name="browse">Sfoglia</string>
<string name="manga_info_full_title_label">Titolo</string>
@ -496,7 +496,7 @@
<string name="track_start_date">Iniziato</string>
<string name="track_type">Tipo</string>
<string name="track_author">Autore</string>
<string name="url_not_set">URL del manga non impostato clicca titolo e riprova</string>
<string name="url_not_set">L\'URL del manga non è impostato clicca sul titolo e seleziona nuovamente il manga</string>
<string name="snack_categories_deleted">Categorie rimosse</string>
@ -514,4 +514,14 @@
<string name="channel_library">Libreria</string>
<string name="channel_downloader">Downloader</string>
</resources>
<string name="transition_finished">Finito:</string>
<string name="transition_current">Corrente:</string>
<string name="transition_next">Prossimo:</string>
<string name="transition_previous">Precedente:</string>
<string name="transition_no_next">Nessun capitolo successivo</string>
<string name="transition_no_previous">Nessun capitolo precedente</string>
<string name="transition_pages_loading">Caricamento pagine…</string>
<string name="transition_pages_error">Caricamento pagine fallito: %1$s</string>
<string name="darkblue_theme">Blu scuro</string>
</resources>

View File

@ -1,4 +1,4 @@
<?xml version='1.0' encoding='UTF-8'?>
<?xml version="1.0" encoding="utf-8"?>
<resources><string name="name"></string>
<string name="categories">カテゴリ</string>
<string name="manga">漫画</string>
@ -37,4 +37,176 @@
<string name="action_display_grid">グリッド</string>
<string name="action_display_list">リスト</string>
<string name="action_sort">ソート</string>
</resources>
<string name="track">追跡</string>
<string name="label_extensions">拡張機能</string>
<string name="label_extension_info">拡張機能の情報</string>
<string name="label_migration">ソース移行</string>
<string name="action_mark_as_read">既読にする</string>
<string name="action_mark_as_unread">未読としてマーク</string>
<string name="action_delete">削除する</string>
<string name="action_update">更新</string>
<string name="action_update_library">ライブラリを更新する</string>
<string name="action_edit">編集</string>
<string name="action_add_category">カテゴリを追加</string>
<string name="action_edit_categories">カテゴリを編集</string>
<string name="action_edit_cover">表紙画像を編集</string>
<string name="action_start">開始</string>
<string name="action_pause">一時停止</string>
<string name="action_clear">クリア</string>
<string name="action_close">クリア</string>
<string name="action_previous_chapter">前の章</string>
<string name="action_next_chapter">次の章</string>
<string name="action_retry">リトライ</string>
<string name="action_resume">履歴書</string>
<string name="action_open_in_browser">ブラウザで開く</string>
<string name="action_add_to_home_screen">ホーム画面に追加</string>
<string name="action_display_mode">表示モードを変更する</string>
<string name="action_display">表示</string>
<string name="action_display_download_badge">バッジをダウンロードする</string>
<string name="action_cancel">キャンセル</string>
<string name="action_share">シェア</string>
<string name="action_save">保存する</string>
<string name="action_reset">リセット</string>
<string name="action_export">輸出する</string>
<string name="action_open_log">ログを開く</string>
<string name="action_create">作成する</string>
<string name="action_restore">リストア</string>
<string name="action_open">開いた</string>
<string name="action_login">ログイン</string>
<string name="deleting">削除しています…</string>
<string name="loading">読み込み中…</string>
<string name="app_not_available">利用できないアプリケーション</string>
<string name="pref_category_general">全般</string>
<string name="pref_category_downloads">ダウンロード</string>
<string name="pref_category_sources">出典</string>
<string name="pref_category_advanced">高度な</string>
<string name="pref_category_about"></string>
<string name="portrait">ポートレート</string>
<string name="landscape">景観</string>
<string name="default_columns">デフォルト</string>
<string name="pref_library_update_interval">ライブラリ更新頻度</string>
<string name="update_never">マニュアル</string>
<string name="update_1hour">毎時</string>
<string name="update_2hour">2時間ごと</string>
<string name="update_3hour">3時間ごと</string>
<string name="update_6hour">6時間ごと</string>
<string name="update_12hour">12時間ごと</string>
<string name="update_24hour">毎日</string>
<string name="update_48hour">2日ごと</string>
<string name="update_weekly">毎週</string>
<string name="update_monthly">毎月</string>
<string name="pref_library_update_categories">グローバルアップデートに含まれるカテゴリ</string>
<string name="all">すべて</string>
<string name="pref_library_update_restriction">ライブラリ更新制限</string>
<string name="pref_library_update_restriction_summary">条件が満たされた場合にのみ更新する</string>
<string name="wifi">Wi-Fi</string>
<string name="charging">充電</string>
<string name="pref_update_only_non_completed">進行中の漫画のみ更新</string>
<string name="pref_auto_update_manga_sync">読んだ後に章を同期</string>
<string name="pref_theme">アプリケーションテーマ</string>
<string name="light_theme">メインテーマ</string>
<string name="dark_theme">ダークテーマ</string>
<string name="amoled_theme">AMOLEDテーマ</string>
<string name="darkblue_theme">ダークブルー</string>
<string name="pref_start_screen">スタート画面</string>
<string name="pref_language">言語</string>
<string name="system_default">システム標準</string>
<string name="default_category">デフォルトカテゴリ</string>
<string name="default_category_summary">毎回尋ねる</string>
<string name="all_lang">すべて</string>
<string name="ext_details">詳細</string>
<string name="ext_update">更新</string>
<string name="ext_install">インストール</string>
<string name="ext_pending">保留</string>
<string name="ext_downloading">ダウンロード中</string>
<string name="ext_installing">インストール</string>
<string name="ext_installed">インストール済み</string>
<string name="ext_trust">トラスト</string>
<string name="ext_untrusted">信用できない</string>
<string name="ext_uninstall">アンインストール</string>
<string name="ext_preferences">設定</string>
<string name="ext_available">利用可能</string>
<string name="untrusted_extension">信頼できない拡張</string>
<string name="ext_version_info">バージョン:%1$s</string>
<string name="ext_language_info">言語: %1$s</string>
<string name="pref_fullscreen">フルスクリーン</string>
<string name="pref_page_transitions">ページ遷移</string>
<string name="pref_double_tap_anim_speed">ダブルタップアニメーション速度</string>
<string name="pref_crop_borders">クロップボーダー</string>
<string name="pref_custom_brightness">カスタムの明るさを使う</string>
<string name="pref_custom_color_filter">カスタムカラーフィルターを使用</string>
<string name="pref_reader_navigation">ナビゲーション</string>
<string name="pref_read_with_volume_keys">ボリュームキー</string>
<string name="pref_read_with_volume_keys_inverted">音量キーを反転する</string>
<string name="pref_read_with_tapping">タッピング</string>
<string name="pref_reader_theme">背景色</string>
<string name="white_background"></string>
<string name="black_background">ブラック</string>
<string name="pref_viewer_type">デフォルトビューア</string>
<string name="default_viewer">デフォルト</string>
<string name="left_to_right_viewer">左から右</string>
<string name="right_to_left_viewer">右から左</string>
<string name="vertical_viewer">縦反転</string>
<string name="webtoon_viewer">Webtoon</string>
<string name="pager_viewer">ページャ</string>
<string name="pref_image_decoder">画像デコーダ</string>
<string name="pref_image_scale_type">スケールの種類</string>
<string name="scale_type_fit_screen">フィット画面</string>
<string name="scale_type_stretch">ストレッチ</string>
<string name="scale_type_fit_width">幅に合わせる</string>
<string name="scale_type_original_size">オリジナルサイズ</string>
<string name="scale_type_smart_fit">スマートフィット</string>
<string name="pref_zoom_start">ズーム開始位置</string>
<string name="zoom_start_automatic">自動</string>
<string name="zoom_start_left"></string>
<string name="zoom_start_right"></string>
<string name="zoom_start_center">中央</string>
<string name="double_tap_anim_speed_normal">通常</string>
<string name="double_tap_anim_speed_fast">速い</string>
<string name="pref_rotation_type">回転</string>
<string name="rotation_free">無料</string>
<string name="rotation_lock">ロック</string>
<string name="rotation_force_portrait">強制肖像画</string>
<string name="color_filter_r_value">R</string>
<string name="color_filter_g_value">ジー</string>
<string name="color_filter_b_value">B</string>
<string name="color_filter_a_value">A</string>
<string name="pref_download_directory">ダウンロードディレクトリ</string>
<string name="pref_download_only_over_wifi">Wi-Fi経由でのみダウンロード</string>
<string name="pref_remove_after_marked_as_read">既読としてマークされている場合は削除</string>
<string name="pref_remove_after_read">読んだ後に削除</string>
<string name="custom_dir">カスタムディレクトリ</string>
<string name="disabled">無効</string>
<string name="second_to_last">最後の章の2番目</string>
<string name="pref_download_new">新しい章をダウンロードする</string>
<string name="pref_download_new_categories">ダウンロードに含まれるカテゴリ</string>
<string name="backup">バックアップ</string>
<string name="pref_create_backup">バックアップを作成する</string>
<string name="pref_create_backup_summ">現在のライブラリを復元するために使用できます。</string>
<string name="pref_restore_backup">バックアップを復元</string>
<string name="pref_restore_backup_summ">バックアップファイルからライブラリを復元する</string>
<string name="pref_backup_directory">バックアップディレクトリ</string>
<string name="pref_backup_service_category">サービス</string>
<string name="pref_backup_interval">バックアップ頻度</string>
<string name="pref_backup_slots">最大自動バックアップ</string>
<string name="dialog_restoring_backup">バックアップを復元します
\n%1$s がライブラリに追加されました</string>
<string name="source_not_found">ソースが見つかりません</string>
<string name="backup_created">バックアップが作成されました</string>
<string name="error_opening_log">ログをオープンできませんでした</string>
<string name="pref_clear_chapter_cache">チャプタキャッシュをクリア</string>
<string name="cache_delete_error">キャッシュの消去中にエラーが発生しました</string>
<string name="pref_clear_database">データベースをクリア</string>
<string name="pref_clear_database_summary">図書館にない漫画や章を削除する</string>
<string name="version">バージョン</string>
<string name="build_time">ビルドタイム</string>
<string name="pref_enable_automatic_updates">アップデートをチェック</string>
<string name="pref_enable_automatic_updates_summary">アプリケーションのアップデートを自動的に確認する</string>
<string name="pref_enable_acra">クラッシュレポートを送信する</string>
<string name="login_title">%1$s のためにログイン</string>
<string name="username">ユーザー名</string>
<string name="password">パスワード</string>
<string name="show_password">パスワードを表示</string>
<string name="login">ログイン</string>
<string name="login_success">ログイン成功</string>
</resources>

View File

@ -1,5 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources><string name="name">이름</string>
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="name">이름</string>
<string name="categories">카테고리</string>
<string name="manga">만화</string>
<string name="chapters">챕터</string>
@ -8,8 +9,7 @@
<string name="label_categories">카테고리</string>
<string name="label_selected">%1$d 선택됨</string>
<string name="label_backup">백업</string>
<string name="action_settings">세팅</string>
<string name="action_settings">설정</string>
<string name="action_filter">필터</string>
<string name="action_filter_downloaded">다운로드됨</string>
<string name="action_filter_bookmarked">북마크됨</string>
@ -22,14 +22,14 @@
<string name="action_search">검색</string>
<string name="action_select_all">전체 선택</string>
<string name="action_mark_as_read">읽음으로 표시</string>
<string name="action_mark_as_unread">아직 안 읽음으로 표시</string>
<string name="action_mark_as_unread">지 않음으로 표시</string>
<string name="action_mark_previous_as_read">항목 바로 전까지 읽음으로 표시</string>
<string name="action_download">다운로드</string>
<string name="action_bookmark">북마크</string>
<string name="action_remove_bookmark">북마크 제거</string>
<string name="action_delete">삭제</string>
<string name="action_update">업데이트</string>
<string name="action_update_library">라이브러리 업데이트</string>
<string name="action_update_library">서재 업데이트</string>
<string name="action_edit">편집</string>
<string name="action_add">추가</string>
<string name="action_add_category">카테고리 추가</string>
@ -51,8 +51,7 @@
<string name="label_settings">세팅</string>
<string name="action_display">디스플레이</string>
<string name="history">기록</string>
<string name="label_download_queue">다운로드 큐</string>
<string name="label_download_queue">다운로드 대기열</string>
<string name="label_library">내 서재</string>
<string name="label_recent_manga">최근 읽음</string>
<string name="label_catalogues">카탈로그</string>
@ -68,7 +67,7 @@
<string name="action_next_chapter">다음 챕터</string>
<string name="action_retry">재시도</string>
<string name="action_move">이동</string>
<string name="action_add_to_home_screen">스크린에 추가</string>
<string name="action_add_to_home_screen"> 화면에 추가</string>
<string name="action_set_filter">필터 설정</string>
<string name="action_share">공유</string>
<string name="action_save">저장</string>
@ -78,20 +77,362 @@
<string name="action_open_log">로그 열기</string>
<string name="action_create">만들기</string>
<string name="action_restore">복구하기</string>
<string name="deleting">삭제 중…</string>
<string name="loading">로딩 중.…</string>
<string name="app_not_available">어플리케이션 이용 불가</string>
<string name="short_recent_updates">업데이트</string>
<string name="pref_category_general">일반</string>
<string name="pref_category_reader">리더</string>
<string name="pref_category_downloads">다운로드</string>
<string name="pref_category_sources">소스</string>
<string name="pref_category_tracking">트래킹</string>
<string name="pref_category_tracking">동기화</string>
<string name="pref_category_advanced">고급 설정</string>
<string name="pref_category_about">정보</string>
<string name="pref_library_columns">가로로 서재 정렬</string>
</resources>
<string name="pref_library_columns">가로로 서재 정렬</string>
<string name="label_migration">소스 이동</string>
<string name="label_extensions">확장기능</string>
<string name="label_extension_info">확장기능 정보</string>
<string name="action_global_search">전역 검색</string>
<string name="action_pause">일시중지</string>
<string name="portrait">세로</string>
<string name="landscape">가로</string>
<string name="default_columns">기본값</string>
<string name="pref_library_update_interval">서재 업데이트 주기</string>
<string name="update_never">수동</string>
<string name="update_1hour">1시간</string>
<string name="update_2hour">2시간</string>
<string name="update_3hour">3시간</string>
<string name="update_6hour">6시간</string>
<string name="update_12hour">12시간</string>
<string name="update_24hour">1일</string>
<string name="update_48hour">2일</string>
<string name="update_weekly">1주</string>
<string name="update_monthly">1달</string>
<string name="pref_library_update_categories">전역 업데이트에 포함할 카테고리</string>
<string name="all">전부</string>
<string name="pref_library_update_restriction">서재 업데이트 제한</string>
<string name="pref_library_update_restriction_summary">조건들이 충족 될 때에만 업데이트</string>
<string name="charging">충전중</string>
<string name="pref_theme">어플리케이션 테마</string>
<string name="light_theme">메인 테마</string>
<string name="dark_theme">어두운 테마</string>
<string name="amoled_theme">AMOLED 테마</string>
<string name="darkblue_theme">다크 블루</string>
<string name="pref_start_screen">시작 화면</string>
<string name="pref_language">언어</string>
<string name="system_default">시스템 기본값</string>
<string name="default_category">기본 카테고리</string>
<string name="all_lang">전부</string>
<string name="ext_update">업데이트</string>
<string name="ext_install">설치</string>
<string name="ext_pending">대기 중</string>
<string name="ext_downloading">다운로드 중</string>
<string name="ext_installing">설치 중</string>
<string name="ext_installed">설치됨</string>
<string name="ext_trust">신뢰</string>
<string name="ext_untrusted">신뢰되지않음</string>
<string name="ext_uninstall">삭제</string>
<string name="ext_preferences">설정</string>
<string name="ext_available">이용 가능</string>
<string name="untrusted_extension">신뢰할 수 없는 확장기능</string>
<string name="untrusted_extension_message">이 확장기능은 신뢰할 수 없는 인증서로 서명되있으며 활성화 되지 않았습니다.
\n
\n악의적인 확장기능은 Tachiyomi 내부에 저장된 로그인 정보들을 읽거나 임의를 코드를 실행할 수 있습니다.
\n
\n이 인증서를 신뢰함으로써 이런 위험들을 감수합니다.</string>
<string name="ext_version_info">버전: %1$s</string>
<string name="ext_language_info">언어: %1$s</string>
<string name="ext_empty_preferences">이 확장기능에 대한 설정이 없습니다</string>
<string name="pref_fullscreen">전체화면</string>
<string name="pref_lock_orientation">회전 잠금</string>
<string name="pref_double_tap_anim_speed">더블 탭 애니메이션 속도</string>
<string name="pref_show_page_number">페이지 번호 표시</string>
<string name="pref_crop_borders">모서리 자르기</string>
<string name="pref_custom_brightness">사용자 정의 밝기 사용</string>
<string name="pref_custom_color_filter">사용자 정의 컬러 필터 사용</string>
<string name="pref_keep_screen_on">화면 켜짐 유지</string>
<string name="pref_read_with_volume_keys">볼륨 키</string>
<string name="pref_read_with_volume_keys_inverted">볼륨 키 뒤바꾸기</string>
<string name="pref_viewer_type">기본 뷰어</string>
<string name="default_viewer">기본값</string>
<string name="left_to_right_viewer">왼쪽에서 오른쪽으로</string>
<string name="right_to_left_viewer">오른쪽에서 왼쪽으로</string>
<string name="vertical_viewer">수직으로</string>
<string name="webtoon_viewer">웹툰</string>
<string name="pref_image_decoder">이미지 디코더</string>
<string name="scale_type_stretch">늘리기</string>
<string name="scale_type_fit_width">가로 맞추기</string>
<string name="scale_type_fit_height">세로 맞추기</string>
<string name="scale_type_original_size">원본 크기</string>
<string name="pref_zoom_start">줌 시작 위치</string>
<string name="zoom_start_automatic">자동</string>
<string name="zoom_start_left">왼쪽t</string>
<string name="zoom_start_right">오른쪽</string>
<string name="zoom_start_center">중앙</string>
<string name="double_tap_anim_speed_0">애니메이션 없음</string>
<string name="double_tap_anim_speed_normal">보통</string>
<string name="double_tap_anim_speed_fast">빠름</string>
<string name="pref_rotation_type">회전</string>
<string name="rotation_free">자유</string>
<string name="rotation_lock">잠금</string>
<string name="rotation_force_portrait">세로로 고정</string>
<string name="rotation_force_landscape">가로로 고정</string>
<string name="pref_download_only_over_wifi">Wi-Fi만 사용해서 다운로드</string>
<string name="pref_remove_after_marked_as_read">읽음 표시 후에 자동으로 삭제</string>
<string name="pref_remove_after_read">읽은 후에 자동으로 삭제</string>
<string name="disabled">비활성화 됨</string>
<string name="last_read_chapter">마지막으로 읽은 챕터</string>
<string name="pref_download_new">새로운 챕터 다운로드</string>
<string name="services">서비스</string>
<string name="backup">백업</string>
<string name="pref_create_backup">백업 생성</string>
<string name="pref_restore_backup">백업 복원</string>
<string name="pref_restore_backup_summ">백업 파일에서 서재 복원</string>
<string name="pref_backup_directory">백업 폴더</string>
<string name="pref_backup_service_category">서비스</string>
<string name="pref_backup_interval">백업 주기</string>
<string name="pref_backup_slots">최대 자동 백업</string>
<string name="dialog_restoring_backup">백업 복원중...
\n %1$s 서재에 추가됨</string>
<string name="source_not_found">소스를 찾을 수 없음</string>
<string name="dialog_restoring_source_not_found">백업 복원중
\n%1$s 소스를 찾을 수 없음</string>
<string name="backup_created">백업 생성됨</string>
<string name="restore_completed">복원 완료</string>
<string name="restoring_backup">백업 복원중</string>
<string name="creating_backup">백업 생성중</string>
<string name="pref_clear_chapter_cache">챕터 캐시 삭제</string>
<string name="used_cache">%1$s 사용중</string>
<string name="cache_deleted">캐시 삭제됨. %1$d개의 파일이 삭제됨</string>
<string name="cache_delete_error">캐시 삭제중 오류가 발생하였습니다</string>
<string name="pref_clear_cookies">쿠키 삭제</string>
<string name="cookies_cleared">쿠키 삭제됨</string>
<string name="pref_clear_database">데이터베이스 삭제</string>
<string name="pref_clear_database_summary">서재에 추가되지 않은 만화와 챕터들을 삭제합니다</string>
<string name="clear_database_confirmation">확실합니까\? 서재에 없는 만화의 읽은 챕터와 진행사항이 삭제됩니다</string>
<string name="pref_refresh_library_metadata">서재 메타데이터 갱신</string>
<string name="pref_refresh_library_metadata_summary">표지와 장르, 설명, 만화 상태 정보들을 업데이트합니다</string>
<string name="pref_refresh_library_tracking">동기화 메타데이터 갱신</string>
<string name="pref_refresh_library_tracking_summary">상태 및 평점, 마지막으로 읽은 챕터를 동기화 서비스에서 업데이트합니다</string>
<string name="version">버전</string>
<string name="build_time">빌드 시간</string>
<string name="pref_enable_automatic_updates">업데이트 확인</string>
<string name="pref_enable_automatic_updates_summary">어플리케이션 업데이트를 자동으로 확인</string>
<string name="pref_enable_acra">충돌 보고서 전송</string>
<string name="pref_acra_summary">버그들을 수정하는데 도움이 됩니다. 민감한 정보는 전송되지 않습니다</string>
<string name="login_title">%1$s 으로 로그인</string>
<string name="username">유저네임</string>
<string name="password">비밀번호</string>
<string name="show_password">비밀번호 표시</string>
<string name="login">로그인</string>
<string name="login_success">로그인 성공</string>
<string name="invalid_login">로그인 오류</string>
<string name="unknown_error">알 수 없는 오류</string>
<string name="updating_category">카테고리 업데이트중</string>
<string name="confirm_delete_manga">선택된 만화들을 정말로 제거하시겠습니까\?</string>
<string name="also_delete_chapters">다운로드된 챕터들도 지우기</string>
<string name="source_search_options">검색 필터</string>
<string name="source_requires_login">이 소스는 로그인을 필요로 합니다</string>
<string name="select_source">소스 선택</string>
<string name="no_valid_sources">최소한 1개의 유효한 소스를 선택해주세요</string>
<string name="no_more_results">더이상 결과 없음</string>
<string name="action_global_search_hint">전역 검색…</string>
<string name="no_results">결과가 없습니다!</string>
<string name="latest">최신</string>
<string name="manga_detail_tab">정보</string>
<string name="description">설명</string>
<string name="ongoing">연재중</string>
<string name="unknown">알 수 없음</string>
<string name="remove_from_library">서재에서 제거</string>
<string name="manga_info_full_title_label">제목</string>
<string name="manga_added_library">서제에 추가됨</string>
<string name="manga_removed_library">서재에서 제거됨</string>
<string name="manga_info_author_label">저자</string>
<string name="manga_info_artist_label">그림</string>
<string name="manga_info_chapters_label">챕터</string>
<string name="manga_info_last_chapter_label">마지막 챕터</string>
<string name="manga_info_latest_data_label">업데이트</string>
<string name="manga_info_status_label">상태</string>
<string name="manga_info_genres_label">장르</string>
<string name="shortcut_title">바로가지 제목</string>
<string name="shortcut_created">바로가기가 홈 화면에 추가되었습니다.</string>
<string name="icon_creation_fail">바로가기 생성 실패!</string>
<string name="delete_downloads_for_manga">다운로드된 챕터를 삭제합니까\?</string>
<string name="source_not_installed">소스 미설치: %1$s</string>
<string name="manga_chapters_tab">챕터</string>
<string name="display_mode_chapter">챕터 %1$s</string>
<string name="chapter_downloaded">다운로드됨</string>
<string name="chapter_downloading">다운로드 중</string>
<string name="chapter_downloading_progress">다운로드중 (%1$d/%2$d)</string>
<string name="chapter_error">오류</string>
<string name="chapter_paused">일시중지됨</string>
<string name="show_chapter_number">챕터 번호 표시</string>
<string name="sorting_mode">정렬 모드</string>
<string name="sort_by_source">소스 기준</string>
<string name="sort_by_number">챕터 번호 기준</string>
<string name="manga_download">다운로드</string>
<string name="download_1">다음 챕터 다운로드</string>
<string name="download_5">다음 5 챕터 다운로드</string>
<string name="download_10">다음 10 챕터 다운로드</string>
<string name="download_all">전부 다운로드</string>
<string name="download_unread">읽지 않은 챕터 다운로드</string>
<string name="confirm_delete_chapters">선택된 챕터를 정말로 삭제하겠습니까\?</string>
<string name="manga_tracking_tab">동기화</string>
<string name="score">평점</string>
<string name="title">제목</string>
<string name="status">상태</string>
<string name="track_status">상태</string>
<string name="track_author">저자</string>
<string name="snack_categories_deleted">카테고리 삭제됨</string>
<string name="dialog_with_checkbox_remove_description">이 챕터의 읽은 날짜를 삭제합니다. 확실합니까\?</string>
<string name="dialog_with_checkbox_reset">이 만화의 챕터들을 전부 리셋</string>
<string name="snack_add_to_library">서재에 만화를 추가합니까\?</string>
<string name="picture_saved">사진 저장됨</string>
<string name="saving_picture">사진 저장중</string>
<string name="options">설정</string>
<string name="custom_filter">사용자 정의 필터</string>
<string name="set_as_cover">표지로 설정</string>
<string name="cover_updated">표지 업데이트됨</string>
<string name="downloading">다운로드 중…</string>
<string name="download_progress">%1$d%% 다운로드됨</string>
<string name="chapter_progress">페이지: %1$d</string>
<string name="chapter_subtitle">챕터 %1$s</string>
<string name="no_next_chapter">다음 챕터가 없습니다</string>
<string name="no_previous_chapter">이전 챕터가 없습니다</string>
<string name="decode_image_error">이미지를 디코드 할 수 없습니다</string>
<string name="confirm_set_image_as_cover">이 이미지를 표지로 설정하시겠습니까\?</string>
<string name="viewer_for_this_series">이 시리즈에 대한 뷰어</string>
<string name="transition_finished">완료:</string>
<string name="transition_current">현재:</string>
<string name="transition_next">다음:</string>
<string name="transition_previous">이전:</string>
<string name="transition_no_next">다움 챕터가 없습니다</string>
<string name="transition_no_previous">이전 챕터가 없습니다</string>
<string name="transition_pages_loading">페이지 로딩중…</string>
<string name="transition_pages_error">페이지 로딩 실패: %1$s</string>
<string name="recent_manga_source">%1$s - %2$s화</string>
<string name="select">선택</string>
<string name="notification_update_progress">업데이트 진행중: %1$d/%2$d</string>
<string name="notification_new_chapters">새로운 챕터 발견</string>
<string name="notification_new_chapters_text">%1$d개의 타이틀</string>
<string name="notification_cover_update_failed">표지 업데이트 실패</string>
<string name="notification_not_connected_to_ac_title">동기화 취소됨</string>
<string name="notification_not_connected_to_ac_body">외부 전원에 연결되지 않음</string>
<string name="notification_no_connection_title">동기화 취소됨</string>
<string name="notification_no_connection_body">연결되지 않음</string>
<string name="file_select_cover">표지 이미지 선택</string>
<string name="file_select_backup">백업 파일 선택</string>
<string name="file_select_icon">바로가기 아이콘 선택</string>
<string name="update_check_title">새로운 업데이트 이용가능!</string>
<string name="update_check_confirm">다운로드</string>
<string name="update_check_ignore">무시</string>
<string name="update_check_no_new_updates">새로운 업데이트 없음</string>
<string name="update_check_download_started">다운로드 시작됨</string>
<string name="update_check_look_for_updates">"업데이트를 찾는중 "</string>
<string name="update_check_notification_file_download">업데이트 다운로드</string>
<string name="update_check_notification_download_in_progress">다운로드 진행중</string>
<string name="update_check_notification_download_complete">다운로드 완료됨</string>
<string name="update_check_notification_download_error">다운로드 오류</string>
<string name="update_check_notification_update_available">업데이트 이용 가능</string>
<string name="description_cover">만화 표지</string>
<string name="information_no_downloads">다운로드 없음</string>
<string name="information_no_recent">최신 챕터 없음</string>
<string name="information_no_recent_manga">최근 읽은 만화 없음</string>
<string name="download_notifier_downloader_title">다운로더</string>
<string name="download_notifier_title_error">오류</string>
<string name="download_notifier_unkown_error">챕터 다운로드중에 예기치 않은 오류가 발생하였습니다</string>
<string name="download_notifier_download_paused">다운로드 일시중지됨</string>
<string name="channel_library">서재</string>
<string name="channel_downloader">다운로더</string>
<string name="action_display_download_badge">다운로드 배지</string>
<string name="action_open">열기</string>
<string name="action_login">로그인</string>
<string name="wifi">Wi-Fi</string>
<string name="pref_update_only_non_completed">연재 중인 만화만 업데이트</string>
<string name="pref_auto_update_manga_sync">읽은 뒤 챕터 동기화</string>
<string name="default_category_summary">항상 물어보기</string>
<string name="ext_details">세부정보</string>
<string name="pref_create_backup_summ">현재 서재를 나중에 복구하는 데 사용 가능</string>
<string name="pref_reader_navigation">네비게이션</string>
<string name="pref_page_transitions">페이지 전환</string>
<string name="pref_read_with_tapping">탭핑</string>
<string name="pref_reader_theme">배경 색상</string>
<string name="white_background">흰색</string>
<string name="black_background">검은색</string>
<string name="pager_viewer">페이저</string>
<string name="pref_image_scale_type">스케일 종류</string>
<string name="scale_type_fit_screen">화면 맞춤</string>
<string name="scale_type_smart_fit">자동 맞춤</string>
<string name="color_filter_r_value">R</string>
<string name="color_filter_g_value">G</string>
<string name="color_filter_b_value">B</string>
<string name="color_filter_a_value">A</string>
<string name="pref_download_directory">다운로드 폴더</string>
<string name="custom_dir">사용자 정의 폴더</string>
<string name="second_to_last">두번째 챕터에서 끝까지</string>
<string name="third_to_last">세번째 챕터에서 끝까지</string>
<string name="fourth_to_last">네번째 챕터에서 끝까지</string>
<string name="fifth_to_last">다섯번째 챕터에서 끝까지</string>
<string name="pref_download_new_categories">다운로드에 포함할 카테고리</string>
<string name="error_opening_log">로그를 열 수 없습니다</string>
<string name="restore_completed_content">복원에 %1$s 소요됨.
\n%2$s 오류 발견됨.</string>
<string name="backup_restore_content">복원시 소스에서 데이터를 가져오며, 통신 비용이 청구 될 수 있습니다.
\n또한 복원 전에 필요한 소스에 제대로 로그인이 되어있는지 확인하십시오.</string>
<string name="file_saved">%1$s에 파일 저장됨</string>
<string name="backup_choice">어떤 항목들을 백업하겠습니까\?</string>
<string name="choices_reset">대화상자 선택 초기화</string>
<string name="clear_database_completed">항목 삭제됨</string>
<string name="library_search_hint">제목 혹은 작가…</string>
<string name="local_source_badge">로컬</string>
<string name="local_source">로컬 만화</string>
<string name="other_source">기타</string>
<string name="invalid_combination">기본 카테고리는 다른 카테고리와 함께 선택될 수 없습니다</string>
<string name="added_to_library">만화가 서재에 추가되었습니다</string>
<string name="browse">찾아보기</string>
<string name="manga_not_in_db">이 만화는 데이터베이스에서 제거되었습니다!</string>
<string name="licensed">판권작</string>
<string name="manga_info_source_label">소스</string>
<string name="circular_icon">원형 아이콘</string>
<string name="rounded_icon">둥근 아이콘</string>
<string name="square_icon">사각형 아이콘</string>
<string name="star_icon">별 아이콘</string>
<string name="icon_shape">아이콘 모양</string>
<string name="copied_to_clipboard">클립보드에 %1$s 복사됨</string>
<string name="manga_chapter_no_title">제목 없음</string>
<string name="chapter_queued">대기중</string>
<string name="fetch_chapters_error">챕터를 가져오는 중에 오류 발생</string>
<string name="show_title">제목 표시</string>
<string name="custom_download">사용자 정의 지정 다운로드</string>
<string name="download_custom">사용자 정의 다운로드</string>
<string name="reading">읽는중</string>
<string name="completed">완료함</string>
<string name="dropped">포기함</string>
<string name="on_hold">일시중지중</string>
<string name="plan_to_read">계획중</string>
<string name="repeating">다시 읽는 중</string>
<string name="track_start_date">시작 일자</string>
<string name="track_type">종류</string>
<string name="url_not_set">만화 URL이 설정 되지 않았습니다. 제목을 클릭하고 만화를 다시 선택해주세요</string>
<string name="error_category_exists">같은 이름을 가진 카테고리가 이미 존재합니다!</string>
<string name="page_downloaded">페이지가 %1$s로 복사됨</string>
<string name="confirm_update_manga_sync">활성화 된 서비스에 있는 마지막으로 읽은 챕터를 %1$d에 업데이트합니까\?</string>
<string name="reader_pull_up_for_more_options">끌어 올려 더 많은 설정 표시</string>
<string name="migration_info">탭하여 이동할 소스 선택</string>
<string name="migration_dialog_what_to_include">선택하여 데이터 포함</string>
<string name="migrate">이동</string>
<string name="copy">복사</string>
<string name="migrating">이동중…</string>
<string name="download_queue_error">챕터 다운로드 도중 오류가 발생했습니다. 다운로드 섹션에서 다시시도 할 수 있습니다</string>
<string name="notification_first_add_to_library">이 행동을 하기 전 서재에 만화를 추가해주세요</string>
<string name="description_backdrop">만화의 배경 이미지</string>
<string name="information_empty_library">서재가 비어있습니다. 카탈로그에서 만화 시리즈를 서재에 추가 할 수 있습니다.</string>
<string name="information_empty_category">카탈로그가 없습니다. 서재 구성을 위해 + 버튼을 눌러 생성하세요.</string>
<string name="download_notifier_page_error">페이지가 폴더에서 누락됨</string>
<string name="download_notifier_page_ready_error">페이지가 로드되지 않았습니다</string>
<string name="download_notifier_text_only_wifi">Wifi 연결 사용 불가능</string>
<string name="download_notifier_no_network">네트워크 연결 사용 불가능</string>
<string name="channel_common">일반</string>
<string name="pref_read_with_long_tap">길게 눌러 대화상자 표시</string>
<string name="custom_hint">갯수</string>
</resources>

View File

@ -410,4 +410,5 @@
<string name="channel_common">Biasa</string>
<string name="channel_library">Koleksi</string>
<string name="channel_downloader">Pemuat turun</string>
</resources>
<string name="label_migration">Pindah sumber</string>
</resources>

View File

@ -0,0 +1,139 @@
<?xml version="1.0" encoding="utf-8"?>
<resources><string name="name">Navn</string>
<string name="categories">Kategorier</string>
<string name="manga">Manga</string>
<string name="chapters">Kapittel</string>
<string name="history">Historikk</string>
<string name="label_settings">Innstillinger</string>
<string name="label_download_queue">Nedlastingskø</string>
<string name="label_library">Mitt bibliotek</string>
<string name="label_recent_manga">Nylig lest</string>
<string name="label_catalogues">Kateloger</string>
<string name="label_recent_updates">Bibliotekoppdateringer</string>
<string name="label_latest_updates">Nyeste oppdateringer</string>
<string name="label_categories">Kategorier</string>
<string name="label_selected">Valgt: %1$d</string>
<string name="label_backup">Sikkerhetskopi</string>
<string name="label_migration">Kildeflytting</string>
<string name="label_extensions">Utvidelser</string>
<string name="label_extension_info">Utvidelsesinfo</string>
<string name="action_settings">Innstillinger</string>
<string name="action_filter">Filter</string>
<string name="action_filter_downloaded">Nedlastet</string>
<string name="action_filter_bookmarked">Bokmerket</string>
<string name="action_filter_unread">Ulest</string>
<string name="action_filter_read">Les</string>
<string name="action_filter_empty">Fjern filter</string>
<string name="action_sort_alpha">Alfabetisk</string>
<string name="action_sort_total">Totale kapittel</string>
<string name="action_sort_last_read">Sist lest</string>
<string name="action_sort_last_updated">Sist oppdatert</string>
<string name="action_search">Søk</string>
<string name="action_select_all">Velg alt</string>
<string name="action_mark_as_read">Marker som lest</string>
<string name="action_mark_as_unread">Marker som ulest</string>
<string name="action_mark_previous_as_read">Merk forrige som lest</string>
<string name="action_download">Last ned</string>
<string name="action_bookmark">Bokmerk</string>
<string name="action_remove_bookmark">Fjern bokmerke</string>
<string name="action_delete">Slett</string>
<string name="action_update">Oppdater</string>
<string name="action_update_library">Oppdater bibliotek</string>
<string name="action_edit">Rediger</string>
<string name="action_add">Legg til</string>
<string name="action_add_category">Legg til kategori</string>
<string name="action_edit_categories">Rediger kategorier</string>
<string name="action_rename_category">Gi kategori nytt navn</string>
<string name="action_move_category">Flytt til kategorier</string>
<string name="action_edit_cover">Rediger omslagsbildet</string>
<string name="action_sort_up">Sorter oppover</string>
<string name="action_sort_down">Sorter nedover</string>
<string name="action_show_downloaded">Nedlastet</string>
<string name="action_next_unread">Neste uleste</string>
<string name="action_start">Start</string>
<string name="action_stop">Stopp</string>
<string name="action_pause">Pause</string>
<string name="action_clear">Tøm</string>
<string name="action_close">Lukk</string>
<string name="action_previous_chapter">Forrige kapittel</string>
<string name="action_next_chapter">Neste kapittel</string>
<string name="action_retry">Prøv igjen</string>
<string name="action_remove">Fjern</string>
<string name="action_resume">Fortsett</string>
<string name="action_move">Flytt</string>
<string name="action_open_in_browser">Åpne i nettleser</string>
<string name="action_add_to_home_screen">Legg til på hjemmeskjerm</string>
<string name="action_display_mode">Endre visningsmodus</string>
<string name="action_display">Vis</string>
<string name="action_display_grid">Rutenett</string>
<string name="action_display_list">Liste</string>
<string name="action_set_filter">Sett filter</string>
<string name="action_cancel">Avbryt</string>
<string name="action_sort">Sorter</string>
<string name="action_install">Installer</string>
<string name="action_share">Del</string>
<string name="action_save">Lagre</string>
<string name="action_reset">Tilbakestill</string>
<string name="action_undo">Angre</string>
<string name="action_export">Eksporter</string>
<string name="action_open_log">Åpne logg</string>
<string name="action_create">Opprett</string>
<string name="action_restore">Gjenopprett</string>
<string name="action_open">Åpne</string>
<string name="action_login">Logg inn</string>
<string name="deleting">Sletter…</string>
<string name="loading">Laster…</string>
<string name="app_not_available">Program ikke tilgjengelig</string>
<string name="short_recent_updates">Oppdateringer</string>
<string name="pref_category_general">Generelt</string>
<string name="pref_category_reader">Leser</string>
<string name="pref_category_downloads">Nedlastinger</string>
<string name="pref_category_sources">Kilder</string>
<string name="pref_category_advanced">Avansert</string>
<string name="pref_category_about">Om</string>
<string name="default_columns">Forvalg</string>
<string name="update_never">Manuell</string>
<string name="update_1hour">Timevis</string>
<string name="update_2hour">Hver andre time</string>
<string name="update_3hour">Hver tredje time</string>
<string name="update_6hour">Hver sjette time</string>
<string name="update_12hour">Hver tolvte time</string>
<string name="update_24hour">Daglig</string>
<string name="update_48hour">Annenhver dag</string>
<string name="update_weekly">Ukentlig</string>
<string name="update_monthly">Månedlig</string>
<string name="all">Alle</string>
<string name="wifi">Wi-Fi</string>
<string name="charging">Lading</string>
<string name="light_theme">Hoveddrakt</string>
<string name="dark_theme">Mørk drakt</string>
<string name="amoled_theme">AMOLED-drakt</string>
<string name="darkblue_theme">Mørkeblå</string>
<string name="pref_start_screen">Startskjerm</string>
<string name="pref_language">Språk</string>
<string name="system_default">Systemforvalg</string>
<string name="default_category">Forvalgt kategori</string>
<string name="default_category_summary">Alltid spør</string>
<string name="all_lang">Alle</string>
<string name="ext_details">Detaljer</string>
<string name="ext_update">Oppdater</string>
<string name="ext_install">Installer</string>
<string name="ext_pending">Ventende</string>
<string name="ext_downloading">Laster ned</string>
<string name="ext_installing">Installerer</string>
<string name="ext_installed">Installert</string>
<string name="ext_trust">Tillit</string>
<string name="ext_untrusted">Ubetrodd</string>
<string name="ext_uninstall">Avinstaller</string>
<string name="ext_preferences">Innstillinger</string>
<string name="ext_available">Tilgjengelig</string>
<string name="untrusted_extension">Ubetrodd utvidelse</string>
<string name="ext_version_info">Versjon: %1$s</string>
<string name="ext_language_info">Språk: %1$s</string>
<string name="pref_fullscreen">Fullskjermsvisning</string>
<string name="pref_lock_orientation">Lås sideretning</string>
<string name="pref_page_transitions">Sideoverganger</string>
<string name="pref_show_page_number">Vis sidenummer</string>
<string name="pref_keep_screen_on">Behold skjerm på</string>
<string name="pref_reader_navigation">Navigasjon</string>
</resources>

View File

@ -1,11 +1,11 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources><string name="name">Naam</string>
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="name">Naam</string>
<string name="categories">Categorieën</string>
<string name="manga">Manga</string>
<string name="chapters">Hoofdstukken</string>
<string name="track">Tracking</string>
<string name="history">Geschiedenis</string>
<string name="label_settings">Instellingen</string>
<string name="label_library">Mijn bibliotheek</string>
<string name="label_recent_manga">Onlangs gelezen</string>
@ -14,7 +14,6 @@
<string name="label_categories">Categorieën</string>
<string name="label_selected">Geselecteerd: %1$d</string>
<string name="label_backup">Back-up</string>
<string name="action_settings">Instellingen</string>
<string name="action_filter">Filter</string>
<string name="action_filter_downloaded">Gedownload</string>
@ -73,10 +72,8 @@
<string name="action_open_log">Open log</string>
<string name="action_create">Maken</string>
<string name="action_restore">Terugzetten</string>
<string name="deleting">Verwijderen…</string>
<string name="loading">Laden…</string>
<string name="pref_category_general">Algemeen</string>
<string name="pref_category_reader">Lezer</string>
<string name="pref_category_downloads">Downloads</string>
@ -104,8 +101,7 @@
<string name="system_default">Systeemstandaard</string>
<string name="default_category">Standaard categorie</string>
<string name="default_category_summary">Altijd vragen</string>
<string name="pref_fullscreen">Volledig scherm</string>
<string name="pref_fullscreen">Volledig scherm</string>
<string name="pref_page_transitions">Paginaovergangen</string>
<string name="pref_show_page_number">Toon paginanummer</string>
<string name="pref_crop_borders">Randen bijsnijden</string>
@ -138,9 +134,7 @@
<string name="color_filter_g_value">G</string>
<string name="color_filter_b_value">B</string>
<string name="color_filter_a_value">A</string>
<string name="pref_download_directory">Downloadmap</string>
<string name="pref_download_directory">Downloadmap</string>
<string name="pref_download_only_over_wifi">Download alleen over Wi-Fi</string>
<string name="custom_dir">Aangepaste map</string>
<string name="last_read_chapter">Laatst gelezen hoofdstuk</string>
@ -148,7 +142,6 @@
<string name="third_to_last">Op 2 na laaste</string>
<string name="pref_download_new">Download nieuwe hoofdstukken</string>
<string name="services">Services</string>
<string name="backup">Back-up</string>
<string name="pref_create_backup">Back-up maken</string>
<string name="pref_create_backup_summ">Kan worden gebruikt om huidige bibliotheek terug te zetten</string>
@ -172,13 +165,11 @@
<string name="backup_choice">Wat wil je back-uppen?</string>
<string name="restoring_backup">Backup aan het terugzetten</string>
<string name="creating_backup">Back-up aan het maken</string>
<string name="used_cache">Gebruikt: %1$s</string>
<string name="used_cache">Gebruikt: %1$s</string>
<string name="pref_clear_cookies">Verwijder cookies</string>
<string name="cookies_cleared">Cookies verwijdered</string>
<string name="pref_refresh_library_tracking_summary">Update status, score en laatst gelezen hoofdstuk van de tracking services</string>
<string name="version">Versie</string>
<string name="version">Versie</string>
<string name="pref_enable_automatic_updates">Op updates controleren</string>
<string name="pref_enable_automatic_updates_summary">Automatisch op updates controleren</string>
<string name="login_title">Login voor %1$s</string>
@ -187,21 +178,17 @@
<string name="show_password">Toon wachtwoord</string>
<string name="login">Log in</string>
<string name="unknown_error">Onbekende fout</string>
<string name="library_search_hint">Titel of auteur…</string>
<string name="updating_category">Categorie bijwerken</string>
<string name="confirm_delete_manga">Ben je zeker dat je de geselecteerde manga wil verwijderen?</string>
<string name="also_delete_chapters">Verwijder ook gedownloade hoofdstukken</string>
<string name="select_source">Selecteer een bron</string>
<string name="no_valid_sources">Gelieve zeker één geldige bron te kiezen</string>
<string name="no_more_results">Geen verdere resultaten</string>
<string name="local_source">Lokale manga</string>
<string name="invalid_combination">Standaard kan niet geselecteerd worden met andere categorieën</string>
<string name="added_to_library">De manga is toegevoegd aan je bibliotheek</string>
<string name="manga_not_in_db">Deze manga is verwijderd uit de databank!</string>
<string name="manga_detail_tab">Info</string>
<string name="description">Beschrijving</string>
<string name="unknown">Onbekend</string>
@ -231,24 +218,18 @@
<string name="download_all">Download alles</string>
<string name="download_unread">Download ongelezen</string>
<string name="confirm_delete_chapters">Ben je zeker dat je de geselecteerde hoofdstukken wilt verwijderen?</string>
<string name="manga_tracking_tab">Tracking</string>
<string name="completed">Voltooid</string>
<string name="score">Score</string>
<string name="title">Titel</string>
<string name="status">Status</string>
<string name="error_category_exists">Er bestaat al een categorie met deze naam!</string>
<string name="snack_categories_deleted">Categorieën verwijderd</string>
<string name="dialog_with_checkbox_reset">Reset alle hoofdstukken voor deze manga</string>
<string name="snack_add_to_library">Manga toevoegen aan bibliotheek?</string>
<string name="picture_saved">Afbeelding opgeslagen</string>
<string name="saving_picture">Afbeelding aan het opslaan</string>
<string name="options">Opties</string>
<string name="custom_filter">Aangepaste filter</string>
<string name="set_as_cover">Instellen als omslagfoto</string>
<string name="cover_updated">Omslagfoto bijgewerkt</string>
@ -257,13 +238,11 @@
<string name="download_progress">%1$d%% gedownload</string>
<string name="chapter_progress">Pagina: %1$d</string>
<string name="chapter_subtitle">Hoofdstuk %1$s</string>
<string name="no_next_chapter">Volgende hoofdstuk niet gevonden</string>
<string name="no_previous_chapter">Vorige hoofdstuk niet gevonden</string>
<string name="no_next_chapter">Volgend hoofdstuk niet gevonden</string>
<string name="no_previous_chapter">Vorig hoofdstuk niet gevonden</string>
<string name="confirm_set_image_as_cover">Wil je deze afbeelding als omslagfoto gebruiken?</string>
<string name="viewer_for_this_series">Lezer voor deze serie</string>
<string name="recent_manga_source">%1$s - Hfdst.%2$s</string>
<string name="notification_update_progress">Updatevoortgang: %1$d/%2$d</string>
<string name="notification_new_chapters">Nieuwe hoofdstukken gevonden</string>
<string name="notification_new_chapters_text">Voor %1$d titels</string>
@ -277,31 +256,25 @@
<string name="update_check_download_started">Download gestart</string>
<string name="update_check_notification_download_complete">Download voltooid</string>
<string name="update_check_notification_update_available">Update beschikbaar</string>
<string name="description_cover">Omslag van de manga</string>
<string name="information_no_downloads">Geen downloads</string>
<string name="information_no_recent">Geen recente hoofdstukken</string>
<string name="information_empty_library">De bibliotheek is leeg, manga kunnen toegevoegd worden vanuit de catalogi.</string>
<string name="information_empty_category">Er zijn nog geen categorieën, druk op de plus knop om een categorie aan te maken.</string>
<string name="download_notifier_downloader_title">Downloader</string>
<string name="download_notifier_title_error">Error</string>
<string name="download_notifier_page_ready_error">Een pagina is niet geladen</string>
<string name="download_notifier_text_only_wifi">Geen Wi-Fi verbinding beschikbaar</string>
<string name="download_notifier_no_network">Geen netwerkverbinding beschikbaar</string>
<string name="download_notifier_download_paused">Download gepauzeerd</string>
<string name="label_recent_updates">Bibliotheek updates</string>
<string name="label_recent_updates">Bibliotheek updates</string>
<string name="action_sort_total">Aantal hoofdstukken</string>
<string name="action_sort_up">Sorteer oplopend</string>
<string name="action_sort_down">Sorteer aflopend</string>
<string name="app_not_available">Applicatie niet beschikbaar</string>
<string name="short_recent_updates">Updates</string>
<string name="pref_category_about">Over</string>
<string name="portrait">Staand</string>
<string name="portrait">Staand</string>
<string name="landscape">Liggend</string>
<string name="pref_library_update_restriction_summary">Update alleen wanneer de voorwaarden zijn voldaan</string>
<string name="wifi">Wi-Fi</string>
@ -332,8 +305,6 @@
<string name="build_time">Compilatietijd</string>
<string name="pref_enable_acra">Rapporteer bugs</string>
<string name="pref_acra_summary">Helpt bij het bestrijden van bugs. Geen gevoelige data wordt verzonden</string>
<string name="information_no_recent_manga">Geen recentelijk gelezen manga</string>
<string name="download_notifier_unkown_error">Er is een onverwachte fout opgetreden bij het downloaden van het hoofdstuk</string>
<string name="download_notifier_page_error">Er ontbreekt een pagina</string>
@ -345,8 +316,7 @@
<string name="pref_lock_orientation">Vergrendel oriëntatie</string>
<string name="pref_keep_screen_on">Automatisch dimmen uitschakelen</string>
<string name="pref_download_new_categories">Categorieën om op te nemen in de download</string>
<string name="clear_database_confirmation">Ben je zeker? Gelezen hoofdstukken en voortgang voor manga niet in de bibliotheek zullen verloren gaan</string>
<string name="clear_database_confirmation">Ben je zeker? Gelezen hoofdstukken en voortgang voor manga niet in de bibliotheek zullen verloren gaan</string>
<string name="clear_database_completed">Databank geleegd</string>
<string name="source_requires_login">Deze bron vereist dat je inlogt</string>
<string name="ongoing">Lopend</string>
@ -358,7 +328,6 @@
<string name="icon_shape">Icoonvorm</string>
<string name="icon_creation_fail">Maken van snelkoppeling mislukt!</string>
<string name="delete_downloads_for_manga">Verwijder gedownloade hoofdstukken?</string>
<string name="manga_chapters_tab">Hoofdstukken</string>
<string name="manga_chapter_no_title">Geen titel</string>
<string name="fetch_chapters_error">Er is een fout opgetreden bij het ophalen van hoofdstukken</string>
@ -366,20 +335,15 @@
<string name="dropped">Laten vallen</string>
<string name="on_hold">In de wacht</string>
<string name="dialog_with_checkbox_remove_description">Dit verwijdert de datum waarop het hoofdstuk is gelezen. Ben je zeker?</string>
<string name="decode_image_error">Afbeelding kon niet worden geladen.
Probeer de afbeeldingdecoder te veranderen met een van de onderstaande opties</string>
<string name="decode_image_error">Afbeelding kon niet worden gedecodeerd.</string>
<string name="download_queue_error">Er is een fout opgetreden bij het downloaden van hoofdstukken. Je kan het opnieuw proberen in de downloadwachtrij</string>
<string name="notification_cover_update_failed">Updaten van omslag mislukt</string>
<string name="notification_not_connected_to_ac_title">Synchronisatie geannuleerd</string>
<string name="notification_not_connected_to_ac_body">Niet aangesloten op netstroom</string>
<string name="notification_no_connection_title">Synchronisatie geannuleerd</string>
<string name="notification_no_connection_body">Verbinding niet beschikbaar</string>
<string name="file_select_icon">Selecteer icoon voor snelkoppeling</string>
<string name="update_check_look_for_updates">Aan het controleren op updates</string>
<string name="update_check_notification_file_download">Download update</string>
<string name="update_check_notification_download_in_progress">Bezig met downloaden</string>
<string name="update_check_notification_download_error">Fout bij het downloaden</string>
@ -398,7 +362,6 @@ Zorg ook dat je ingelogd bent voor bronnen die dit vereisen alvorens je het teru
<string name="action_display_download_badge">Download badges</string>
<string name="action_open">Open</string>
<string name="action_login">Inloggen</string>
<string name="local_source_badge">Lokaal</string>
<string name="other_source">Alternatief</string>
<string name="action_global_search_hint">Globaal zoeken…</string>
@ -407,7 +370,69 @@ Zorg ook dat je ingelogd bent voor bronnen die dit vereisen alvorens je het teru
<string name="shortcut_created">Snelkoppeling toegevoegd aan startscherm.</string>
<string name="channel_library">Bibliotheek</string>
<string name="channel_downloader">Downloader</string>
<string name="browse">Bladeren</string>
<string name="browse">Bladeren</string>
<string name="channel_common">Algemeen</string>
</resources>
<string name="label_migration">Bronmigratie</string>
<string name="label_extensions">Extensies</string>
<string name="label_extension_info">Informatie over extensie</string>
<string name="custom_hint">hoeveelheid</string>
<string name="darkblue_theme">Donkerblauw</string>
<string name="all_lang">Alles</string>
<string name="ext_details">Details</string>
<string name="ext_update">Bijwerken</string>
<string name="ext_install">Installeer</string>
<string name="ext_pending">Aan het afwachten</string>
<string name="ext_downloading">Aan het downloaden</string>
<string name="ext_installing">Aan het installeren</string>
<string name="ext_installed">Geïnstalleerd</string>
<string name="ext_trust">Vertouw</string>
<string name="ext_untrusted">Niet vertrouwd</string>
<string name="ext_uninstall">Verwijderen</string>
<string name="ext_preferences">Voorkeuren</string>
<string name="ext_available">Beschikbaar</string>
<string name="untrusted_extension">Niet vertrouwde extensie</string>
<string name="untrusted_extension_message">Deze extensie is door een niet vertrouwde certificaat ondertekend en is niet geactiveerd.
\n
\nEen kwaadaardige extensie zou alle login gegevens kunnen uitlezen in Tachiyomi of arbitraire code uitvoeren.
\n
\nBij het vertrouwen van dit certificaat accepteer je deze risico\'s</string>
<string name="ext_version_info">Versie: %1$s</string>
<string name="ext_language_info">Taal: %1$s</string>
<string name="ext_empty_preferences">Er zijn geen aan te passen voorkeuren voor deze extensie</string>
<string name="pref_double_tap_anim_speed">Dubbel tik animatiesnelheid</string>
<string name="pref_read_with_long_tap">Lange tik dialoog</string>
<string name="pager_viewer">Paginas</string>
<string name="double_tap_anim_speed_0">Geen animatie</string>
<string name="double_tap_anim_speed_normal">Normaal</string>
<string name="double_tap_anim_speed_fast">Snel</string>
<string name="source_search_options">Zoek filters</string>
<string name="manga_info_full_title_label">Titel</string>
<string name="manga_added_library">Toegevoegd aan bibliotheek</string>
<string name="manga_removed_library">Verwijderd uit bibliotheek</string>
<string name="manga_info_latest_data_label">Bijgewerkt</string>
<string name="copied_to_clipboard">%1$s gekopieerd naar het klembord</string>
<string name="source_not_installed">Bron niet geïnstalleerd: %1$s</string>
<string name="custom_download">Download aangepaste hoeveelheid</string>
<string name="download_custom">Download aangepaste hoeveelheid</string>
<string name="repeating">Herlezen</string>
<string name="track_status">Status</string>
<string name="track_start_date">Gestart</string>
<string name="track_type">Soort</string>
<string name="track_author">Auteur</string>
<string name="url_not_set">Manga url is niet ingesteld, klik alstublieft op de titel en selecteer de manga opnieuw</string>
<string name="transition_finished">Afgerond:</string>
<string name="transition_current">Huidige:</string>
<string name="transition_next">Volgende:</string>
<string name="transition_previous">Vorige:</string>
<string name="transition_no_next">Er is geen volgend hoofdstuk</string>
<string name="transition_no_previous">Er is geen vorig hoofdstuk</string>
<string name="transition_pages_loading">Pagina\'s aan het laden…</string>
<string name="transition_pages_error">Fout bij het laden van pagina\'s : %1$s</string>
<string name="reader_pull_up_for_more_options">Trek omhoog voor meer opties</string>
<string name="migration_info">Tik om een bron te selecteren om naar toe te migreren</string>
<string name="migration_dialog_what_to_include">Selecteer data om mee te tellen</string>
<string name="select">Selecteer</string>
<string name="migrate">Migreer</string>
<string name="copy">Kopiëren</string>
<string name="migrating">Aan het migreren…</string>
</resources>

View File

@ -1,4 +1,4 @@
<?xml version='1.0' encoding='UTF-8'?>
<?xml version="1.0" encoding="utf-8"?>
<resources><string name="categories">Kategorie</string>
<string name="chapters">Rozdziały</string>
<string name="name">Nazwa</string>
@ -367,8 +367,7 @@ Nie znaleziono źródła %1$s</string>
<string name="custom_filter">Filtr niestandardowy</string>
<string name="page_downloaded">Strona skopiowana do %1$s</string>
<string name="decode_image_error">Nie można załadować obrazka.
Spróbuj zmienić dekoder lub skorzystaj z jednej z opcji poniżej</string>
<string name="decode_image_error">Nie udało się wczytać obrazka</string>
<string name="confirm_update_manga_sync">Zaktualizować ostatni przeczytany rozdział na %1$d?</string>
<string name="confirm_set_image_as_cover">Czy chcesz ustawić ten obrazek jako okładkę?</string>
<string name="viewer_for_this_series">Widok dla tej serii</string>
@ -470,4 +469,13 @@ Spróbuj zmienić dekoder lub skorzystaj z jednej z opcji poniżej</string>
<string name="track_author">Autor</string>
<string name="url_not_set">URL mangi nie jest ustawiony, kliknij tytuł i wybierz mangę jeszcze raz</string>
</resources>
<string name="transition_finished">Przeczytany:</string>
<string name="transition_current">Obecny:</string>
<string name="transition_next">Następny:</string>
<string name="transition_previous">Poprzedni:</string>
<string name="transition_no_next">Brak następnego rozdziału</string>
<string name="transition_no_previous">Nie ma wcześniejszych rozdziałów</string>
<string name="transition_pages_loading">Ładowanie stron…</string>
<string name="transition_pages_error">Nie udało się załadować stron: %1$s</string>
<string name="darkblue_theme">Ciemny niebieski</string>
</resources>

View File

@ -1,11 +1,11 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources><string name="name">Nome</string>
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="name">Nome</string>
<string name="categories">Categorias</string>
<string name="manga">Mangá</string>
<string name="chapters">Capítulos</string>
<string name="track">Monitoramento</string>
<string name="history">Histórico</string>
<string name="label_settings">Configurações</string>
<string name="label_download_queue">Fila de download</string>
<string name="label_library">Minha biblioteca</string>
@ -16,7 +16,6 @@
<string name="label_categories">Categorias</string>
<string name="label_selected">Selecionado: %1$d</string>
<string name="label_backup">Backup</string>
<string name="action_settings">Configurações</string>
<string name="action_filter">Filtrar</string>
<string name="action_filter_downloaded">Disponível offline</string>
@ -79,13 +78,10 @@
<string name="action_open_log">Abrir registro de eventos</string>
<string name="action_create">Criar</string>
<string name="action_restore">Restaurar</string>
<string name="deleting">Excluindo…</string>
<string name="loading">Carregando…</string>
<string name="app_not_available">Aplicativo indisponível</string>
<string name="short_recent_updates">Atualizações</string>
<string name="pref_category_general">Geral</string>
<string name="pref_category_reader">Leitor</string>
<string name="pref_category_downloads">Downloads</string>
@ -93,8 +89,7 @@
<string name="pref_category_tracking">Monitoramento</string>
<string name="pref_category_advanced">Avançado</string>
<string name="pref_category_about">Sobre</string>
<string name="pref_library_columns">Mangás por linha na biblioteca</string>
<string name="pref_library_columns">Mangás por linha na biblioteca</string>
<string name="portrait">Retrato</string>
<string name="landscape">Paisagem</string>
<string name="default_columns">Padrão</string>
@ -126,8 +121,7 @@
<string name="system_default">Padrão do sistema</string>
<string name="default_category">Categoria padrão</string>
<string name="default_category_summary">Sempre perguntar</string>
<string name="pref_fullscreen">Tela cheia</string>
<string name="pref_fullscreen">Tela cheia</string>
<string name="pref_lock_orientation">Bloquear orientação</string>
<string name="pref_page_transitions">Transição de página</string>
<string name="pref_show_page_number">Mostrar número da página</string>
@ -170,9 +164,7 @@
<string name="color_filter_g_value">G</string>
<string name="color_filter_b_value">B</string>
<string name="color_filter_a_value">A</string>
<string name="pref_download_directory">Pasta de downloads</string>
<string name="pref_download_directory">Pasta de downloads</string>
<string name="pref_download_only_over_wifi">Fazer download apenas via Wi-Fi</string>
<string name="pref_remove_after_marked_as_read">Excluir ao marcar como lido</string>
<string name="pref_remove_after_read">Excluir depois de ler</string>
@ -185,9 +177,7 @@
<string name="fifth_to_last">Quinto capítulo antes do último</string>
<string name="pref_download_new">Fazer download de novos capítulos</string>
<string name="pref_download_new_categories">Categorias para fazer download</string>
<string name="services">Serviços</string>
<string name="services">Serviços</string>
<string name="backup">Backup</string>
<string name="pref_create_backup">Fazer backup</string>
<string name="pref_create_backup_summ">Pode ser usado para restaurar a biblioteca atual</string>
@ -213,8 +203,7 @@ Além disso, verifique se as fontes que requerem uma conta foram configuradas co
<string name="backup_choice">Do que você deseja fazer backup?</string>
<string name="restoring_backup">Restaurando backup</string>
<string name="creating_backup">Fazendo backup</string>
<string name="pref_clear_chapter_cache">Limpar o cache de capítulos</string>
<string name="pref_clear_chapter_cache">Limpar o cache de capítulos</string>
<string name="used_cache">Total usado: %1$s</string>
<string name="cache_deleted">Cache limpo. %1$d arquivos foram excluídos</string>
<string name="cache_delete_error">Ocorreu um erro ao limpar o cache</string>
@ -229,15 +218,12 @@ Além disso, verifique se as fontes que requerem uma conta foram configuradas co
<string name="pref_refresh_library_metadata_summary">Atualiza informações como as capas, gêneros, descrições e situação dos mangás</string>
<string name="pref_refresh_library_tracking">Atualizar metadados do monitoramento</string>
<string name="pref_refresh_library_tracking_summary">Atualiza informações como situação, avaliações e últimos capítulos lidos dos serviços de monitoramento</string>
<string name="version">Versão</string>
<string name="version">Versão</string>
<string name="build_time">Data de compilação</string>
<string name="pref_enable_automatic_updates">Procurar por atualizações</string>
<string name="pref_enable_automatic_updates_summary">Procurar por atualizações automaticamente</string>
<string name="pref_enable_acra">Enviar relatórios de erro</string>
<string name="pref_acra_summary">Ajuda a corrigir eventuais erros. Não serão enviados dados sensíveis</string>
<string name="login_title">Fazer login em %1$s</string>
<string name="username">Nome de usuário</string>
<string name="password">Senha</string>
@ -246,21 +232,17 @@ Além disso, verifique se as fontes que requerem uma conta foram configuradas co
<string name="login_success">Login bem sucedido</string>
<string name="invalid_login">Erro ao fazer login</string>
<string name="unknown_error">Erro desconhecido</string>
<string name="library_search_hint">Título ou autor…</string>
<string name="updating_category">Atualizando categoria</string>
<string name="confirm_delete_manga">Tem certeza de que deseja remover os mangás selecionados?</string>
<string name="also_delete_chapters">Também excluir os capítulos disponíveis offline</string>
<string name="source_requires_login">Esta fonte requer uma conta</string>
<string name="select_source">Selecione uma fonte</string>
<string name="no_valid_sources">Por favor, ative pelo menos uma fonte válida</string>
<string name="no_more_results">Não há mais resultados</string>
<string name="local_source">Mangá local</string>
<string name="added_to_library">O mangá foi adicionado à sua biblioteca</string>
<string name="manga_not_in_db">Este mangá foi excluído do seu banco de dados!</string>
<string name="manga_detail_tab">Informações</string>
<string name="description">Descrição</string>
<string name="ongoing">Em andamento</string>
@ -282,7 +264,6 @@ Além disso, verifique se as fontes que requerem uma conta foram configuradas co
<string name="icon_shape">Formato do ícone</string>
<string name="icon_creation_fail">Erro ao criar o atalho!</string>
<string name="delete_downloads_for_manga">Excluir os capítulos disponíveis offline?</string>
<string name="manga_chapters_tab">Capítulos</string>
<string name="manga_chapter_no_title">Sem título</string>
<string name="display_mode_chapter">Capítulo %1$s</string>
@ -305,7 +286,6 @@ Além disso, verifique se as fontes que requerem uma conta foram configuradas co
<string name="download_all">Fazer download de tudo</string>
<string name="download_unread">Fazer download dos não lidos</string>
<string name="confirm_delete_chapters">Tem certeza de que deseja excluir os capítulos selecionados?</string>
<string name="manga_tracking_tab">Monitoramento</string>
<string name="reading">Lendo</string>
<string name="completed">Concluído</string>
@ -315,19 +295,14 @@ Além disso, verifique se as fontes que requerem uma conta foram configuradas co
<string name="score">Avaliação</string>
<string name="title">Título</string>
<string name="status">Situação</string>
<string name="error_category_exists">Já existe uma categoria com este nome!</string>
<string name="snack_categories_deleted">Categorias excluídas</string>
<string name="dialog_with_checkbox_remove_description">Esta ação removerá a data de leitura deste capítulo. Tem certeza?</string>
<string name="dialog_with_checkbox_reset">Restaurar todos os capítulos deste mangá</string>
<string name="snack_add_to_library">Adicionar mangá a biblioteca?</string>
<string name="picture_saved">Imagem salva</string>
<string name="saving_picture">Salvando imagem</string>
<string name="options">Opções</string>
<string name="custom_filter">Filtro personalizado</string>
<string name="set_as_cover">Usar como capa</string>
<string name="cover_updated">Capa atualizada</string>
@ -338,16 +313,12 @@ Além disso, verifique se as fontes que requerem uma conta foram configuradas co
<string name="chapter_subtitle">Capítulo %1$s</string>
<string name="no_next_chapter">Próximo capítulo não encontrado</string>
<string name="no_previous_chapter">Capítulo anterior não encontrado</string>
<string name="decode_image_error">A imagem não pôde ser carregada.
\nTente alterar o decodificador de imagens ou uma das seguintes opções</string>
<string name="decode_image_error">A imagem não pôde ser decodificada</string>
<string name="confirm_update_manga_sync">Atualizar o último capítulo lido para %1$d nos serviços ativos?</string>
<string name="confirm_set_image_as_cover">Deseja usar esta imagem como capa?</string>
<string name="viewer_for_this_series">Leitura para esta série</string>
<string name="recent_manga_source">%1$s - Cap.%2$s</string>
<string name="download_queue_error">Ocorreu um erro ao fazer download dos capítulos. Você pode tentar novamente na seção de downloads</string>
<string name="notification_update_progress">Progresso da atualização: %1$d/%2$d</string>
<string name="notification_new_chapters">Novos capítulos encontrados</string>
<string name="notification_new_chapters_text">Para %1$d títulos</string>
@ -357,32 +328,26 @@ Além disso, verifique se as fontes que requerem uma conta foram configuradas co
<string name="notification_not_connected_to_ac_body">O dispositivo não está sendo carregado</string>
<string name="notification_no_connection_title">Sincronização cancelada</string>
<string name="notification_no_connection_body">Conexão indisponível</string>
<string name="file_select_cover">Selecionar imagem de capa</string>
<string name="file_select_backup">Selecionar arquivo de backup</string>
<string name="file_select_icon">Selecionar ícone do atalho</string>
<string name="update_check_title">Nova atualização disponível!</string>
<string name="update_check_confirm">Fazer download</string>
<string name="update_check_ignore">Ignorar</string>
<string name="update_check_no_new_updates">Sem atualizações disponíveis</string>
<string name="update_check_download_started">Download iniciado</string>
<string name="update_check_look_for_updates">Procurando por atualizações</string>
<string name="update_check_notification_file_download">Fazer download da atualização</string>
<string name="update_check_notification_download_in_progress">Download em progresso</string>
<string name="update_check_notification_download_complete">Download concluído</string>
<string name="update_check_notification_download_error">Erro ao fazer download</string>
<string name="update_check_notification_update_available">Atualização disponível</string>
<string name="description_backdrop">Imagem de fundo do mangá</string>
<string name="description_cover">Capa do mangá</string>
<string name="information_no_downloads">Nenhum download</string>
<string name="information_no_recent">Sem capítulos recentes</string>
<string name="information_no_recent_manga">Sem mangás lidos recentemente</string>
<string name="information_empty_library">A sua biblioteca está vazia. Você pode adicionar séries à biblioteca pelo menu Catálogos.</string>
<string name="download_notifier_downloader_title">Gerenciador de downloads</string>
<string name="download_notifier_title_error">Erro</string>
<string name="download_notifier_unkown_error">Ocorreu um erro inesperado ao fazer download do capítulo</string>
@ -391,31 +356,25 @@ Além disso, verifique se as fontes que requerem uma conta foram configuradas co
<string name="download_notifier_text_only_wifi">Nenhuma conexão Wi-Fi disponível</string>
<string name="download_notifier_no_network">Conexão à rede indisponível</string>
<string name="download_notifier_download_paused">Download pausado</string>
<string name="invalid_combination">O padrão não pode ser selecionado com outras categorias</string>
<string name="invalid_combination">O padrão não pode ser selecionado com outras categorias</string>
<string name="action_global_search">Pesquisa global</string>
<string name="action_open">Abrir</string>
<string name="action_login">Entrar</string>
<string name="other_source">Outras</string>
<string name="action_global_search_hint">Pesquisa global…</string>
<string name="no_results">Nenhum resultado encontrado!</string>
<string name="latest">Mais recente</string>
<string name="browse">Navegar</string>
<string name="shortcut_created">O atalho foi adicionado à sua tela inicial.</string>
<string name="channel_common">Comum</string>
<string name="channel_library">Biblioteca</string>
<string name="channel_downloader">Fila de download</string>
<string name="action_display_download_badge">Ícones de download</string>
<string name="action_display_download_badge">Ícones de download</string>
<string name="local_source_badge">Local</string>
<string name="information_empty_category">Você ainda não tem nenhuma categoria. Pressione o botão (+) para criar uma e organizar a sua biblioteca.</string>
<string name="label_migration">Migrar fonte</string>
<string name="label_extensions">Extensões</string>
<string name="label_extension_info">Informações da extensão</string>
<string name="all_lang">Todas</string>
<string name="ext_details">Detalhes</string>
<string name="ext_update">Atualizar</string>
@ -438,8 +397,7 @@ Além disso, verifique se as fontes que requerem uma conta foram configuradas co
<string name="ext_version_info">Versão: %1$s</string>
<string name="ext_language_info">Idioma: %1$s</string>
<string name="ext_empty_preferences">Não há preferências a serem editadas para esta extensão</string>
<string name="pref_double_tap_anim_speed">Velocidade da animação de toque duplo</string>
<string name="pref_double_tap_anim_speed">Velocidade da animação de toque duplo</string>
<string name="double_tap_anim_speed_0">Sem animação</string>
<string name="double_tap_anim_speed_normal">Normal</string>
<string name="double_tap_anim_speed_fast">Rápida</string>
@ -449,7 +407,6 @@ Além disso, verifique se as fontes que requerem uma conta foram configuradas co
<string name="manga_removed_library">Removido da biblioteca</string>
<string name="manga_info_latest_data_label">Última atualização</string>
<string name="copied_to_clipboard">%1$s copiado para área de transferência</string>
<string name="custom_download">Fazer download de uma quantidade personalizada</string>
<string name="custom_hint">quantidade</string>
<string name="download_custom">Fazer download personalizado</string>
@ -459,9 +416,7 @@ Além disso, verifique se as fontes que requerem uma conta foram configuradas co
<string name="migrate">Migrar</string>
<string name="copy">Copiar</string>
<string name="migrating">Migrando…</string>
<string name="source_not_installed">Fonte não instalada: %1$s</string>
<string name="repeating">Relendo</string>
<string name="pager_viewer">Leitor</string>
<string name="track_status">Situação</string>
@ -469,5 +424,15 @@ Além disso, verifique se as fontes que requerem uma conta foram configuradas co
<string name="track_type">Tipo</string>
<string name="track_author">Autor</string>
<string name="url_not_set">URL do mangá não definida, por favor clique no título e selecione novamente</string>
</resources>
<string name="transition_finished">Concluído:</string>
<string name="transition_current">Atual:</string>
<string name="transition_next">Próximo:</string>
<string name="transition_previous">Anterior:</string>
<string name="transition_no_next">Não há próximo capítulo</string>
<string name="transition_no_previous">Não há capítulo anterior</string>
<string name="transition_pages_loading">Carregando páginas…</string>
<string name="transition_pages_error">Falha ao carregar páginas: %1$s</string>
<string name="darkblue_theme">Azul escuro</string>
<string name="reader_pull_up_for_more_options">Deslize para cima para mais opções</string>
<string name="pref_read_with_long_tap">Diálogo de toque longo</string>
</resources>

View File

@ -1,7 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?>
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="name">Nome</string>
<!-- Activities and fragments labels (toolbar title) -->
<string name="label_settings">Definições</string>
<string name="label_download_queue">Fila de Transferências</string>
@ -12,7 +11,6 @@
<string name="label_categories">Categorias</string>
<string name="label_selected">Selecionado: %1$d</string>
<string name="label_backup">Cópia de segurança</string>
<!-- Actions -->
<string name="action_settings">Definições</string>
<string name="action_filter">Filtro</string>
@ -54,11 +52,9 @@
<string name="action_cancel">Cancelar</string>
<string name="action_sort">Ordenar</string>
<string name="action_install">Instalar</string>
<!-- Operations -->
<string name="deleting">A eliminar…</string>
<string name="loading">A carregar…</string>
<!-- Preferences -->
<!-- Subsections -->
<string name="pref_category_general">Geral</string>
@ -67,7 +63,6 @@
<string name="pref_category_sources">Fontes</string>
<string name="pref_category_advanced">Avançado</string>
<string name="pref_category_about">Sobre</string>
<!-- General section -->
<string name="pref_library_columns">Número de manga por fila</string>
<string name="portrait">Retrato</string>
@ -93,7 +88,6 @@
<string name="pref_theme">Tema da aplicação</string>
<string name="light_theme">Tema principal</string>
<string name="dark_theme">Tema escuro</string>
<!-- Reader section -->
<string name="pref_fullscreen">Ocultar barra de estado</string>
<string name="pref_lock_orientation">Bloquear orientação</string>
@ -131,7 +125,6 @@
<string name="rotation_lock">Bloqueado</string>
<string name="rotation_force_portrait">Forçar retrato</string>
<string name="rotation_force_landscape">Forçar paisagem</string>
<!-- Downloads section -->
<string name="pref_download_directory">Pasta de Transferências</string>
<string name="pref_download_only_over_wifi">Transferir apenas através Wi-Fi</string>
@ -144,22 +137,19 @@
<string name="third_to_last">Terceiro capítulo antes do último</string>
<string name="fourth_to_last">Quarto capítulo antes do último</string>
<string name="fifth_to_last">Quinto capítulo antes do último</string>
<!-- Sync section -->
<string name="services">Serviços</string>
<!-- Advanced section -->
<string name="pref_clear_chapter_cache">Limpar a cache dos capítulos</string>
<string name="used_cache">Usado: %1$s</string>
<string name="cache_deleted">Cache limpa. %1$d ficheiros foram eliminados</string>
<string name="cache_delete_error">Ocorreu um erro ao eliminar a cache</string>
<string name="pref_clear_cookies">Limpar cookies</string>
<string name="cookies_cleared">Cookies limpas</string>
<string name="pref_clear_database">Limpar redundância da base de dados</string>
<string name="pref_clear_database_summary">Eliminar manga não presente na biblioteca</string>
<string name="clear_database_confirmation">Capítulos lidos e progresso em manga que não está na biblioteca será perdido. Deseja continuar?</string>
<string name="cookies_cleared">Cookies limpos</string>
<string name="pref_clear_database">Limpar base de dados</string>
<string name="pref_clear_database_summary">Eliminar mangás e capítulos não presentes na biblioteca</string>
<string name="clear_database_confirmation">Tem certeza\? O progresso de capítulos e mangás de fora da biblioteca será perdido</string>
<string name="clear_database_completed">Eliminar entradas</string>
<!-- About section -->
<string name="version">Versão</string>
<string name="build_time">Hora da compilação</string>
@ -168,7 +158,6 @@
<!-- ACRA -->
<string name="pref_enable_acra">Enviar relatórios de erro</string>
<string name="pref_acra_summary">Ajuda a corrigir qualquer erro. Não serão enviados dados sensíveis</string>
<!-- Login dialog -->
<string name="login_title">Iniciar sessão para %1$s</string>
<string name="username">Nome de utilizador</string>
@ -178,17 +167,14 @@
<string name="login_success">Início de sessão bem sucedido</string>
<string name="invalid_login">Início de sessão falhado</string>
<string name="unknown_error">Erro desconhecido</string>
<!-- Library fragment -->
<string name="library_search_hint">Título ou autor…</string>
<string name="updating_category">A atualizar categoria</string>
<string name="confirm_delete_manga">Eliminar manga selecionada?</string>
<!-- Catalogue fragment -->
<string name="source_requires_login">Esta fonte necessita que inicies a sessão</string>
<string name="select_source">Selecionar a fonte</string>
<string name="no_valid_sources">Por favor habilite pelo menos uma fonte valida</string>
<!-- Manga info fragment -->
<string name="manga_detail_tab">Informações</string>
<string name="description">Descrição</string>
@ -202,7 +188,6 @@
<string name="manga_info_status_label">Estado</string>
<string name="manga_info_source_label">Fonte</string>
<string name="manga_info_genres_label">Géneros</string>
<!-- Manga chapter fragment -->
<string name="manga_chapters_tab">Capítulos</string>
<string name="manga_chapter_no_title">Sem título</string>
@ -225,7 +210,6 @@
<string name="download_all">Transferir tudo</string>
<string name="download_unread">Transferir não lidos</string>
<string name="confirm_delete_chapters">Eliminar os capítulos selecionados?</string>
<!-- MyAnimeList fragment -->
<string name="reading">A ler</string>
<string name="completed">Completo</string>
@ -236,11 +220,9 @@
<string name="title">Título</string>
<string name="status">Estado</string>
<string name="chapters">Capítulos</string>
<!-- Dialog remove recently view -->
<string name="dialog_with_checkbox_remove_description">Esta ação irá remover a data de leitura deste capítulo. Continuar?</string>
<string name="dialog_with_checkbox_reset">Repor todos os capítulos desta manga</string>
<!-- Reader activity -->
<string name="downloading">A transferir…</string>
<string name="download_progress">Transferido %1$d%%</string>
@ -251,16 +233,12 @@
<string name="decode_image_error">Imagem não pôde ser carregada.\nPor favor tente alterar o descodificador de imagem ou selecione uma das seguintes opções</string>
<string name="confirm_update_manga_sync">Atualizar último capítulo lido a %1$d nos serviços ativos?</string>
<string name="viewer_for_this_series">Visualizador para esta série</string>
<!-- Backup fragment -->
<string name="backup">Cópia de segurança</string>
<!-- Recent manga fragment -->
<string name="recent_manga_source">%1$s - Cap.%2$s</string>
<!-- Downloads activity and service -->
<string name="download_queue_error">Ocorreu um erro ao transferir capítulos. Poderá tentar novamente na secção das transferências</string>
<!-- Library update service notifications -->
<string name="notification_update_progress">Progresso da atualização: %1$d/%2$d</string>
<string name="notification_new_chapters">Novos capítulos encontrados</string>
@ -269,11 +247,9 @@
<string name="notification_not_connected_to_ac_body">O dispositivo não está ligado ao carregador</string>
<string name="notification_no_connection_title">Sincronização cancelada</string>
<string name="notification_no_connection_body">Ligação indisponível</string>
<!-- File Picker Titles -->
<string name="file_select_cover">Selecionar imagem de capa</string>
<string name="file_select_backup">Selecionar ficheiro de cópia de segurança</string>
<!--UpdateCheck-->
<string name="update_check_title">Nova atualização disponível!</string>
<string name="update_check_confirm">Transferido</string>
@ -281,41 +257,33 @@
<string name="update_check_no_new_updates">Sem atualizações disponíveis</string>
<string name="update_check_download_started">Transferência iniciada</string>
<string name="update_check_look_for_updates">À procura de atualizações</string>
<!--UpdateCheck Notifications-->
<string name="update_check_notification_file_download">Transferir atualização</string>
<string name="update_check_notification_download_in_progress">Transferência em curso</string>
<string name="update_check_notification_download_complete">Transferência completa</string>
<string name="update_check_notification_download_error">Erro na transferência</string>
<string name="update_check_notification_update_available">Atualização disponível</string>
<!--Content Description-->
<string name="description_backdrop">Imagem de capa da manga</string>
<string name="description_cover">Imagem de capa da manga</string>
<!-- Information Text -->
<string name="information_no_downloads">Sem transferências</string>
<string name="information_no_recent">Sem capítulos recentes</string>
<string name="information_no_recent_manga">Sem manga lida recentemente</string>
<string name="information_empty_library">Biblioteca vazia</string>
<string name="information_empty_library">Sua biblioteca está vazia, você pode adicionar séries dos catálogos à sua biblioteca.</string>
<!-- Download Notification -->
<string name="download_notifier_title_error">Erro</string>
<string name="download_notifier_unkown_error">Erro inesperado ao transferir capítulo</string>
<string name="download_notifier_page_error">Página em falta na pasta</string>
<string name="download_notifier_page_ready_error">Página não carregada</string>
<string name="download_notifier_text_only_wifi">Sem ligação de Wi-Fi disponível</string>
<string name="categories">Categorias</string>
<string name="categories">Categorias</string>
<string name="manga">Mangá</string>
<string name="track">Manutenção</string>
<string name="history">Histórico</string>
<string name="label_latest_updates">Últimas atualizações</string>
<string name="label_extensions">Extensões</string>
<string name="label_extension_info">Info. da extensão</string>
<string name="action_filter_bookmarked">Favoritos</string>
<string name="action_sort_alpha">Alfabeticamente</string>
<string name="action_sort_total">Número total de capítulos</string>
@ -337,13 +305,82 @@
<string name="action_create">Criar</string>
<string name="action_open">Abrir</string>
<string name="action_login">Entrar</string>
<string name="short_recent_updates">Atualizações</string>
<string name="update_weekly">Semanalmente</string>
<string name="update_monthly">Mensalmente</string>
<string name="amoled_theme">Tema AMOLED</string>
<string name="pref_start_screen">Ecrã inicial</string>
<string name="pref_language">Língua</string>
<string name="system_default">Predefinição do sistema</string>
</resources>
<string name="action_sort_last_updated">Última atualização</string>
<string name="action_restore">Restaurar</string>
<string name="app_not_available">Atalhos</string>
<string name="default_category">Categoria padrão</string>
<string name="default_category_summary">Sempre perguntar</string>
<string name="ext_details">Detalhes</string>
<string name="ext_update">Atualização</string>
<string name="ext_install">Instalar</string>
<string name="ext_pending">Pendente</string>
<string name="ext_downloading">Fazendo download</string>
<string name="ext_installing">Instalando</string>
<string name="ext_installed">Instalado</string>
<string name="ext_uninstall">Desinstalar</string>
<string name="ext_preferences">Preferências</string>
<string name="ext_available">Disponível</string>
<string name="untrusted_extension">Extensão não confiável</string>
<string name="untrusted_extension_message">Esta extensão possui um certificado não confiável e não foi ativada.
\n
\nUma extensão maliciosa podia ler qualquer credencial de login armazenada no Tachiyomi ou executar código arbitrário.
\n
\nAo confiar neste certificado você aceita estes riscos.</string>
<string name="ext_version_info">Versão: %1$s</string>
<string name="ext_language_info">Linguagem: %1$s</string>
<string name="ext_empty_preferences">Não há preferências editáveis para esta extensão</string>
<string name="pref_crop_borders">Cortar bordas</string>
<string name="pref_custom_color_filter">Usar filtro de cor personalizado</string>
<string name="pref_read_with_volume_keys_inverted">Inverter botões de volume</string>
<string name="double_tap_anim_speed_0">Sem animação</string>
<string name="double_tap_anim_speed_normal">Normal</string>
<string name="double_tap_anim_speed_fast">Rápido</string>
<string name="color_filter_g_value">G</string>
<string name="color_filter_b_value">B</string>
<string name="color_filter_a_value">A</string>
<string name="pref_download_new">Fazer download de novos capítulos</string>
<string name="pref_create_backup">Criar backup</string>
<string name="pref_create_backup_summ">Pode ser usado para restaurar a biblioteca atual</string>
<string name="pref_restore_backup">Restaurar backup</string>
<string name="pref_restore_backup_summ">Restaurar biblioteca a partir de um ficheiro de backup</string>
<string name="pref_backup_service_category">Serviço</string>
<string name="pref_backup_interval">Frequência de backup</string>
<string name="source_not_found">Fonte não encontrada</string>
<string name="restoring_backup">Restaurando backup</string>
<string name="creating_backup">Criando backup</string>
<string name="label_migration">Migração de fonte</string>
<string name="action_reset">Reiniciar</string>
<string name="action_open_log">Abrir registro</string>
<string name="pref_category_tracking">Listas</string>
<string name="darkblue_theme">Preto/Azul</string>
<string name="all_lang">Tudo</string>
<string name="pref_double_tap_anim_speed">Velocidade animação dois toques</string>
<string name="pager_viewer">Paginas</string>
<string name="color_filter_r_value">R</string>
<string name="pref_download_new_categories">Categorias para incluir na transferência</string>
<string name="pref_backup_directory">Pasta de Backups</string>
<string name="dialog_restoring_backup">A restaurar backup…\n%1$s adicionado a biblioteca</string>
<string name="dialog_restoring_source_not_found">A restaurar backup…\n%1$s Fonte não encontrada</string>
<string name="backup_created">Backup criado</string>
<string name="restore_completed">Restauro completo</string>
<string name="error_opening_log">Não foi possivel abrir o registo</string>
<string name="restore_completed_content">Restauro levou %1$s.\n%2$s erros encontrados.</string>
<string name="file_saved">Ficheiro salvo em %1$s</string>
<string name="backup_choice">O que pretende fazer backup\?</string>
<string name="pref_refresh_library_metadata">Refrescar metadata da biblioteca</string>
<string name="pref_backup_slots">Máximo de backups automáticos</string>
<string name="choices_reset">Resetar escolhas de diálogo</string>
<string name="action_display_download_badge">Transferir emblemas</string>
<string name="ext_trust">Confiar</string>
<string name="ext_untrusted">Não confiar</string>
<string name="download_custom">Transferir personalizado</string>
<string name="pref_read_with_long_tap">Diálogo de toque longo</string>
<string name="pref_refresh_library_metadata_summary">Atualizar capas, géneros, descrição e informação sobre o estado de lançamento do mangá</string>
</resources>

View File

@ -3,7 +3,7 @@
<string name="categories">Categorii</string>
<string name="manga">Manga</string>
<string name="chapters">Capitole</string>
<string name="track">Tracking</string>
<string name="track">Urmărind</string>
<string name="history">Istoric</string>
<string name="label_settings">Setări</string>
@ -56,7 +56,7 @@
<string name="action_start">Start</string>
<string name="action_stop">Stop</string>
<string name="action_pause">Pauză</string>
<string name="action_clear">Șterge</string>
<string name="action_clear">Curățare</string>
<string name="action_close">Închide</string>
<string name="action_previous_chapter">Capitolul anterior</string>
<string name="action_next_chapter">Capitolul următor</string>
@ -79,7 +79,7 @@
<string name="action_reset">Resetează</string>
<string name="action_undo">Anulează</string>
<string name="action_export">Exportează</string>
<string name="action_open_log">Deschide jurnalul</string>
<string name="action_open_log">Deschide jurnal</string>
<string name="action_create">Creează</string>
<string name="action_restore">Restaurează</string>
<string name="action_open">Deschide</string>
@ -95,7 +95,7 @@
<string name="pref_category_reader">Cititor</string>
<string name="pref_category_downloads">Descărcări</string>
<string name="pref_category_sources">Surse</string>
<string name="pref_category_tracking">Tracking</string>
<string name="pref_category_tracking">Urmărind</string>
<string name="pref_category_advanced">Avansat</string>
<string name="pref_category_about">Despre</string>
@ -157,4 +157,318 @@
<string name="pref_fullscreen">Ecran complet</string>
<string name="pref_lock_orientation">Orientare blocată</string>
<string name="pref_page_transitions">Tranziții între pagini</string>
</resources>
<string name="action_sort_up">Sortare de sus</string>
<string name="action_sort_down">Sortare de jos</string>
<string name="action_display_download_badge">Insigne descărcate</string>
<string name="landscape">Peisaj</string>
<string name="darkblue_theme">Albastru închis</string>
<string name="pref_double_tap_anim_speed">Animație pentru apăsare dublă</string>
<string name="pref_show_page_number">Arată numărul paginii</string>
<string name="pref_crop_borders">Taie marginile</string>
<string name="pref_custom_brightness">Folosește luminozitate personalizată</string>
<string name="pref_custom_color_filter">Folosește filtru color personalizat</string>
<string name="pref_keep_screen_on">Păstrează ecranul pornit</string>
<string name="pref_reader_navigation">Navigare</string>
<string name="pref_read_with_volume_keys">Butoane de volum</string>
<string name="pref_read_with_volume_keys_inverted">Inversează butoanele de volum</string>
<string name="pref_read_with_tapping">Apăsare</string>
<string name="pref_reader_theme">Culoare de fundal</string>
<string name="white_background">Alb</string>
<string name="black_background">Negru</string>
<string name="pref_viewer_type">Mod citire</string>
<string name="default_viewer">Implicit</string>
<string name="left_to_right_viewer">De la stânga la dreapta</string>
<string name="right_to_left_viewer">De la dreapta la stânga</string>
<string name="vertical_viewer">Vertical</string>
<string name="webtoon_viewer">Bandă desenată</string>
<string name="pager_viewer">Setări pagini</string>
<string name="pref_image_decoder">Decodor de imagine</string>
<string name="pref_image_scale_type">Tip de mărime</string>
<string name="scale_type_fit_screen">Potrivire ecran</string>
<string name="scale_type_stretch">Întinde</string>
<string name="scale_type_fit_width">Potrivire lățime</string>
<string name="scale_type_fit_height">Potrivire înălțime</string>
<string name="scale_type_original_size">Marime originală</string>
<string name="scale_type_smart_fit">Potrivire smart</string>
<string name="pref_zoom_start">Poziție inițială de mărire</string>
<string name="zoom_start_automatic">Automat</string>
<string name="zoom_start_left">Stânga</string>
<string name="zoom_start_right">Dreapta</string>
<string name="zoom_start_center">Centru</string>
<string name="double_tap_anim_speed_0">Fără animație</string>
<string name="double_tap_anim_speed_normal">Normal</string>
<string name="double_tap_anim_speed_fast">Rapid</string>
<string name="pref_rotation_type">Rotație</string>
<string name="rotation_free">Liber</string>
<string name="rotation_lock">Blocare</string>
<string name="rotation_force_portrait">Forțează portret</string>
<string name="rotation_force_landscape">Forțează landscape</string>
<string name="color_filter_r_value">R</string>
<string name="color_filter_g_value">G</string>
<string name="color_filter_b_value">B</string>
<string name="color_filter_a_value">A</string>
<string name="pref_download_directory">Registru descărcări</string>
<string name="pref_download_only_over_wifi">Descarcă doar prin Wi-Fi</string>
<string name="pref_remove_after_marked_as_read">Elimina când este marcat ca citit</string>
<string name="pref_remove_after_read">Elimină dupa ce a foat citit</string>
<string name="custom_dir">Registru personalizat</string>
<string name="disabled">Deactivat</string>
<string name="last_read_chapter">Ultimul capitol citit</string>
<string name="second_to_last">Penultimul capitol</string>
<string name="third_to_last">Al treilea capitol până la sfârșit</string>
<string name="fourth_to_last">Al patrulea capitol până la sfârșit</string>
<string name="fifth_to_last">Al cincilea capitol până la sfârșit</string>
<string name="pref_download_new">Descarcă capitole noi</string>
<string name="pref_download_new_categories">Categorii de inclus în descărcate</string>
<string name="services">Servicii</string>
<string name="backup">Copie de rezervă</string>
<string name="pref_create_backup">Crează copie de rezervă</string>
<string name="pref_create_backup_summ">Poate fii folosit pentru a restaura biblioteca curentă</string>
<string name="pref_restore_backup">Restaurează copia de rezervă</string>
<string name="pref_restore_backup_summ">Restaurează biblioteca din fișierul copiei de rezervă</string>
<string name="pref_backup_directory">Registrul copiei de rezervă</string>
<string name="pref_backup_service_category">Serviciu</string>
<string name="pref_backup_interval">Frecventă a copiilor de rezervă</string>
<string name="pref_backup_slots">Maximum copii de rezervă automate</string>
<string name="dialog_restoring_backup">Restaurarea copiei de rezervă
\n%1$s adăugat la bibliotecă</string>
<string name="source_not_found">Sursa nu a fost găsită</string>
<string name="dialog_restoring_source_not_found">Restaurarea copiei de rezervă
\n%1$s sursa nu a fost găsită</string>
<string name="backup_created">Copie de rezervă creată</string>
<string name="restore_completed">Restaurare completă</string>
<string name="error_opening_log">Nu s-a putut deschide log</string>
<string name="restore_completed_content">Restaurarea a durat %1$s.
\n%2$s erori găsite.</string>
<string name="backup_restore_content">Restaurare folosește sursa pentru a aduce datele, cost suplimentar aplicabil. De asemenea verificați dacă sunteți autentificați în sursele ce au nevoie înainte de a incepe restaurarea.</string>
<string name="file_saved">Fișier salvat in %1$s</string>
<string name="backup_choice">Doriți să creați copie de rezervă\?</string>
<string name="restoring_backup">Restaurând copia de rezervă</string>
<string name="creating_backup">Creând copia de rezervă</string>
<string name="pref_clear_chapter_cache">Curățare capitole depozitate</string>
<string name="used_cache">Folosit: %1$s</string>
<string name="cache_deleted">Depozit curățat. %1$d fișierele au fost șterse</string>
<string name="cache_delete_error">A aparut o eroare in timpul curățări depozitului</string>
<string name="pref_clear_cookies">Curățare cookies</string>
<string name="cookies_cleared">Cookies curățate</string>
<string name="choices_reset">Resetare optiuni de dialog</string>
<string name="pref_clear_database">Curățare bază de date</string>
<string name="pref_clear_database_summary">Șterge manga și capitolele care nu sunt în bibliotecă</string>
<string name="clear_database_confirmation">Ești sigur\? Capitolele citite si progresul mangaurilor ce nu sunt în bibliotecă vor fi pierdute</string>
<string name="clear_database_completed">Înregistrări șterse</string>
<string name="pref_refresh_library_metadata">Reîncărca metadata bibliotecii</string>
<string name="pref_refresh_library_metadata_summary">Actualizare coperți, genuri, descrieri și informații despre starea mangaului</string>
<string name="pref_refresh_library_tracking">Reîncărca urmarirea metadata</string>
<string name="pref_refresh_library_tracking_summary">Actualizează statusul, scorul și ultimul capitol citit de la serviciile de urmarire</string>
<string name="version">Versiune</string>
<string name="build_time">Data versiunii</string>
<string name="pref_enable_automatic_updates">Verifică pentru actualizări</string>
<string name="pref_enable_automatic_updates_summary">"Verifică automat pentru actualizări "</string>
<string name="pref_enable_acra">Trimite rapoarte pt eșuări</string>
<string name="pref_acra_summary">Ajută la rezolvarea bug-urilor. Informații sensibile nu vor fi trimise</string>
<string name="login_title">Autentificare pentru %1$s</string>
<string name="username">Nume de utilizator</string>
<string name="password">Parolă</string>
<string name="show_password">Arată parola</string>
<string name="login">Autentificare</string>
<string name="login_success">Autentificare reușită</string>
<string name="invalid_login">Eroare autentificare</string>
<string name="unknown_error">Eroare necunoscută</string>
<string name="library_search_hint">Titlul sau autorul…</string>
<string name="updating_category">Actualizand categoria</string>
<string name="local_source_badge">Local</string>
<string name="confirm_delete_manga">Ești sigur ca vrei să elimini manga selectat\?</string>
<string name="also_delete_chapters">Șterge și capitolele descărcate</string>
<string name="source_search_options">Filtre de căutare</string>
<string name="source_requires_login">Această sursă necesită să te autentifici</string>
<string name="select_source">Selectează o sursă</string>
<string name="no_valid_sources">Te rugăm să autorizezi cel puțin o sursă validă</string>
<string name="no_more_results">Nu mai sunt rezultate</string>
<string name="local_source">Manga local</string>
<string name="other_source">Altele</string>
<string name="invalid_combination">Modul implicit nu poate fi selectat cu alte categorii</string>
<string name="added_to_library">Manga-ul a fost adăugat bibliotecii tale</string>
<string name="action_global_search_hint">Căutare globală…</string>
<string name="no_results">Nici un rezultat găsit!</string>
<string name="latest">Cel mai recent</string>
<string name="browse">Caută</string>
<string name="manga_not_in_db">Acest manga a fost eliminat din baza de date!</string>
<string name="manga_detail_tab">Info</string>
<string name="description">Descriere</string>
<string name="ongoing">În desfășurarea</string>
<string name="unknown">Necunoscut</string>
<string name="licensed">Licențiat</string>
<string name="remove_from_library">Elimină din bibliotecă</string>
<string name="manga_info_full_title_label">Titlu</string>
<string name="manga_added_library">Adăugat la bibliotecă</string>
<string name="manga_removed_library">Eliminat din bibliotecă</string>
<string name="manga_info_author_label">Autor</string>
<string name="manga_info_artist_label">Artist</string>
<string name="manga_info_chapters_label">Capitole</string>
<string name="manga_info_last_chapter_label">Ultimul capitol</string>
<string name="manga_info_latest_data_label">Actualizat</string>
<string name="manga_info_status_label">Status</string>
<string name="manga_info_source_label">Sursă</string>
<string name="manga_info_genres_label">Genuri</string>
<string name="circular_icon">Icoană circulară</string>
<string name="rounded_icon">Icoană rotunjita</string>
<string name="square_icon">Icoană pătrată</string>
<string name="star_icon">Icoană stea</string>
<string name="shortcut_title">Scurtătură titlu</string>
<string name="shortcut_created">Scurtătura a fost adăugată ecranului principal.</string>
<string name="icon_shape">Forma icoanei</string>
<string name="icon_creation_fail">Creere scurtătură eșuată!</string>
<string name="delete_downloads_for_manga">Ștergeți capitolele descărcate\?</string>
<string name="copied_to_clipboard">%1$s copiat in clipboard</string>
<string name="source_not_installed">Sursa nu este instalată:%1$s</string>
<string name="manga_chapters_tab">Capitole</string>
<string name="manga_chapter_no_title">Fără titlu</string>
<string name="display_mode_chapter">Capitolul %1$s</string>
<string name="chapter_downloaded">Descărcat</string>
<string name="chapter_queued">În așteptare</string>
<string name="chapter_downloading">Se descarcă</string>
<string name="chapter_downloading_progress">Se descarcă (%1$d/%2$d)</string>
<string name="chapter_error">Eroare</string>
<string name="chapter_paused">Inrerupt</string>
<string name="fetch_chapters_error">Eroare în aducerea capitolelor</string>
<string name="show_title">Arată titlul</string>
<string name="show_chapter_number">Arată numărul capitolului</string>
<string name="sorting_mode">Mod de sortare</string>
<string name="sort_by_source">După sursă</string>
<string name="sort_by_number">După numărul de capitole</string>
<string name="manga_download">Descarcă</string>
<string name="custom_download">Descarcă cantitate personalizată</string>
<string name="custom_hint">cantitate</string>
<string name="download_1">Descarcă următoarul capitol</string>
<string name="download_5">Descarcă următoarele 5 capitole</string>
<string name="download_10">Descarcă următoarele 10 capitole</string>
<string name="download_custom">Descarcare personalizată</string>
<string name="download_all">Descarcă tot</string>
<string name="download_unread">Descarcă necitite</string>
<string name="confirm_delete_chapters">Ești sigur că vrei să ștergi capitolele selectate\?</string>
<string name="manga_tracking_tab">"Urmărind "</string>
<string name="reading">Citind</string>
<string name="completed">Copletat</string>
<string name="dropped">Abandonat</string>
<string name="on_hold">Pe pauză</string>
<string name="plan_to_read">Planificat pentru citit</string>
<string name="repeating">Recitire</string>
<string name="score">Scor</string>
<string name="title">Titlu</string>
<string name="status">Status</string>
<string name="track_status">Status</string>
<string name="track_start_date">Început</string>
<string name="track_type">Tip</string>
<string name="track_author">Autor</string>
<string name="url_not_set">Url-ul de la manga nu e setat vă rugam selectați titlul si manga din nou</string>
<string name="error_category_exists">O categorie cu acest nume deja există!</string>
<string name="snack_categories_deleted">Categorii șterse</string>
<string name="dialog_with_checkbox_remove_description">Aceasta va șterge data citirii acestui capitol. Ești sigur\?</string>
<string name="dialog_with_checkbox_reset">Resetează toate capitolele acestui manga</string>
<string name="snack_add_to_library">Adaugă manga la bibliotecă\?</string>
<string name="picture_saved">Imagine salvată</string>
<string name="saving_picture">Salvare imagine</string>
<string name="options">Opțiuni</string>
<string name="custom_filter">Filtru personalizat</string>
<string name="set_as_cover">Stabilește o copertă</string>
<string name="cover_updated">Copertă actualizată</string>
<string name="page_downloaded">Pagină copiată în %1$s</string>
<string name="downloading">Descărcare…</string>
<string name="download_progress">Descărcat %1$d%%</string>
<string name="chapter_progress">Pagina: %1$d</string>
<string name="chapter_subtitle">Capitolul %1$s</string>
<string name="no_next_chapter">Capitolul următor nu a fost găsit</string>
<string name="no_previous_chapter">Capitolul precedent nu a fost găsit</string>
<string name="decode_image_error">Imaginea nu a putu fi decodată</string>
<string name="confirm_update_manga_sync">Actualizează ultimul capitol citit și pornește serviciile la %1$d\?</string>
<string name="confirm_set_image_as_cover">Doriți să setați această imagine drept copertă\?</string>
<string name="viewer_for_this_series">Cititor al acestei serii</string>
<string name="transition_finished">Terminat:</string>
<string name="transition_current">Actual:</string>
<string name="transition_next">Următorul:</string>
<string name="transition_previous">Precedent:</string>
<string name="transition_no_next">Nu există capitolul următor</string>
<string name="transition_no_previous">Nu există capitolul precedent</string>
<string name="transition_pages_loading">Încărcând paginile…</string>
<string name="transition_pages_error">Încărcarea paginilor eșuată: %1$s</string>
<string name="recent_manga_source">%1$s - Cap.%2$s</string>
<string name="migration_info">Apăsați pentru a selecta sursa de unde să migrați</string>
<string name="migration_dialog_what_to_include">Selactati ce date să fie incluse</string>
<string name="select">Selectează</string>
<string name="migrate">Migrează</string>
<string name="copy">Copiază</string>
<string name="migrating">Migrând…</string>
<string name="download_queue_error">Am întâmpinat o eroare dascarcând capitolele. Puteți încerca din noi în sectiunea de descărcări</string>
<string name="notification_update_progress">Progresul actualizării: %1$d/%2$d</string>
<string name="notification_new_chapters">Capitol nou găsit</string>
<string name="notification_new_chapters_text">Pentru %1$d titluri</string>
<string name="notification_cover_update_failed">Actualizare copertă eșuată</string>
<string name="notification_first_add_to_library">Vă rugăma să adăugați mangaul la bibliotecă incinte de a face asta</string>
<string name="notification_not_connected_to_ac_title">Sincronizare anulată</string>
<string name="notification_not_connected_to_ac_body">Nu este conectat la curent alternativ (AC)</string>
<string name="notification_no_connection_title">Sincronizare anulată</string>
<string name="notification_no_connection_body">Conexiune indisponibilă</string>
<string name="file_select_cover">Selectează imagine copertă</string>
<string name="file_select_backup">Selectează fișier de copie de rezervă</string>
<string name="file_select_icon">Selectează icoană scurtătură</string>
<string name="update_check_title">Actualizare nouă valabilă!</string>
<string name="update_check_confirm">Descarcă</string>
<string name="update_check_ignore">Ignoră</string>
<string name="update_check_no_new_updates">Nici o actualizare nouă valabilă</string>
<string name="update_check_download_started">Descărcare pornită</string>
<string name="update_check_look_for_updates">În căutare de actualizări</string>
<string name="update_check_notification_file_download">Descarcă actualizare</string>
<string name="update_check_notification_download_in_progress">Descărcare in curs</string>
<string name="update_check_notification_download_complete">Descărcare completă</string>
<string name="update_check_notification_download_error">Eroare descărcare</string>
<string name="update_check_notification_update_available">Actualizare valabilă</string>
<string name="description_backdrop">Imagine în findal la manga</string>
<string name="description_cover">Coperta la manga</string>
<string name="information_no_downloads">Nici o descărcare</string>
<string name="information_no_recent">Nici un capitol recent</string>
<string name="information_no_recent_manga">Nici un manga citi recent</string>
<string name="information_empty_library">Biblioteca dumneavoastră este goală, puteți adaugă serii la bibliotecă de la Categorii.</string>
<string name="information_empty_category">Nu aveți categorii. Apăsați butonul plus pentru a crea una pentru a vă organiza biblioteca.</string>
<string name="download_notifier_downloader_title">Client de descărcare</string>
<string name="download_notifier_title_error">Eroare</string>
<string name="download_notifier_unkown_error">O eroare neașteptată s-a intamplat in timpul descărcării capitolului</string>
<string name="download_notifier_page_error">O pagină lipsește din director</string>
<string name="download_notifier_page_ready_error">O pagină nu este încărcată</string>
<string name="download_notifier_text_only_wifi">Nici o conexiune wifi valabilă</string>
<string name="download_notifier_no_network">Nici o conexiune la internet valabilă</string>
<string name="download_notifier_download_paused">Descărcare oprită</string>
<string name="channel_common">General</string>
<string name="channel_library">Bibliotecă</string>
<string name="channel_downloader">Client de descărcare</string>
</resources>

View File

@ -1,8 +1,8 @@
<?xml version='1.0' encoding='UTF-8'?>
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="action_add">Добавить</string>
<string name="action_add_category">Добавить категорию</string>
<string name="action_add_to_home_screen">Добавить на домашний экран</string>
<string name="action_add_to_home_screen">Добавить на главный экран</string>
<string name="action_bookmark">Закладка</string>
<string name="action_cancel">Отмена</string>
<string name="action_clear">Очистить</string>
@ -25,7 +25,7 @@
<string name="action_mark_as_read">Отметить как прочитанное</string>
<string name="action_mark_as_unread">Пометить как непрочитанное</string>
<string name="action_mark_previous_as_read">Отметить предыдущие как прочит</string>
<string name="action_move_category">Изменить категорию</string>
<string name="action_move_category">Поместить в категорию</string>
<string name="action_next_chapter">Следующая глава</string>
<string name="action_next_unread">Следующая непрочитанная</string>
<string name="action_open_in_browser">Открыть в браузере</string>
@ -33,7 +33,7 @@
<string name="action_previous_chapter">Предыдущая глава</string>
<string name="action_remove">Удалить</string>
<string name="action_remove_bookmark">Удалить закладку</string>
<string name="action_rename_category">Удалить категорию</string>
<string name="action_rename_category">Переименовать категорию</string>
<string name="action_reset">Сбросить</string>
<string name="action_resume">Продолжить</string>
<string name="action_retry">Повторить</string>
@ -55,7 +55,7 @@
<string name="action_update">Обновить</string>
<string name="action_update_library">Обновить библиотеку</string>
<string name="all">Все</string>
<string name="backup">Бэкап</string>
<string name="backup">Резервная копия</string>
<string name="black_background">Черный</string>
<string name="build_time">Дата сборки</string>
<string name="cache_delete_error">Возникла ошибка при удалении кэша</string>
@ -87,7 +87,7 @@
<string name="custom_dir">Пользовательский каталог</string>
<string name="custom_filter">Пользовательский фильтр</string>
<string name="dark_theme">Темная тема</string>
<string name="decode_image_error">Изображение не может быть загружено. Попробуйте изменить декодер опциями ниже</string>
<string name="decode_image_error">Не удалось декодировать изображение</string>
<string name="default_columns">По умолчанию</string>
<string name="default_viewer">По умолчанию</string>
<string name="deleting">Удаление…</string>
@ -128,13 +128,13 @@
<string name="information_no_recent">Нет новых глав</string>
<string name="information_no_recent_manga">Нет недавно прочитанных глав</string>
<string name="invalid_login">Ошибка авторизации</string>
<string name="label_backup">Бэкап</string>
<string name="label_backup">Резервное копирование</string>
<string name="label_catalogues">Каталоги</string>
<string name="label_categories">Категории</string>
<string name="label_download_queue">Очередь загрузки</string>
<string name="label_latest_updates">Последние обновления</string>
<string name="label_library">Библиотека</string>
<string name="label_recent_manga">История чтения</string>
<string name="label_recent_manga">История</string>
<string name="label_recent_updates">Обновления библиотеки</string>
<string name="label_selected">Выбраны: %1$d</string>
<string name="label_settings">Настройки</string>
@ -158,7 +158,7 @@
<string name="manga_info_genres_label">Жанры</string>
<string name="manga_info_status_label">Статус</string>
<string name="manga_info_source_label">Источник</string>
<string name="manga_not_in_db">Эта манга будет удалена из базы данных!</string>
<string name="manga_not_in_db">Эта манга была удалена из базы данных!</string>
<string name="manga_tracking_tab">Отслеживать</string>
<string name="name">Название</string>
<string name="no_next_chapter">Следующая глава не найдена</string>
@ -207,7 +207,7 @@
<string name="pref_image_scale_type">Масштабирование</string>
<string name="pref_keep_screen_on">Держать экран включенным</string>
<string name="pref_language">Язык</string>
<string name="pref_library_columns">Количество колонок в библиотеке</string>
<string name="pref_library_columns">Количество в ряд</string>
<string name="pref_library_update_categories">Категории включенные в глобальный поиск</string>
<string name="pref_library_update_interval">Частота обновления библиотеки</string>
<string name="pref_library_update_restriction">Ограничения обновления библиотеки</string>
@ -248,7 +248,7 @@
<string name="second_to_last">Предпоследняя</string>
<string name="select_source">Выберите каталог</string>
<string name="services">Сервисы</string>
<string name="set_as_cover">Установить обложку</string>
<string name="set_as_cover">Установить как обложку</string>
<string name="shortcut_title">Название ярлыка</string>
<string name="show_chapter_number">Показывать номер главы</string>
<string name="show_password">Показывать пароль</string>
@ -291,7 +291,7 @@
<string name="version">Версия</string>
<string name="vertical_viewer">Вертикальный</string>
<string name="viewer_for_this_series">Отображение для этой серии</string>
<string name="webtoon_viewer">Комикс</string>
<string name="webtoon_viewer">Вебомикс</string>
<string name="white_background">Белый</string>
<string name="wifi">Wi-Fi</string>
<string name="zoom_start_automatic">Автоматическая</string>
@ -300,7 +300,7 @@
<string name="zoom_start_right">Справа</string>
<string name="action_close">Закрыть</string>
<string name="action_create">Создать</string>
<string name="action_export">Экспорт</string>
<string name="action_export">Экспортировать</string>
<string name="action_move">Переместить</string>
<string name="action_restore">Восстановить</string>
<string name="action_undo">Отменить</string>
@ -349,7 +349,7 @@
<string name="track">Отслеживание</string>
<string name="update_monthly">Ежемесячно</string>
<string name="update_weekly">Еженедельно</string>
<string name="action_sort_total">По количеству глав</string>
<string name="action_sort_total">По количеству глав</string>
<string name="action_open_log">Открыть лог</string>
<string name="app_not_available">Приложение не отвечает</string>
<string name="pref_read_with_volume_keys_inverted">Инвертировать клавиши громкости</string>
@ -357,21 +357,19 @@
<string name="action_display_download_badge">Значок загруженных</string>
<string name="action_open">Открыть</string>
<string name="action_login">Логин</string>
<string name="local_source_badge">Локальная</string>
<string name="other_source">Другие</string>
<string name="action_global_search_hint">Глобальный поиск…</string>
<string name="no_results">Результат не найден!</string>
<string name="latest">Последняя</string>
<string name="browse">Смотреть</string>
<string name="shortcut_created">Ярлык был добавлен на главный экран.</string>
<string name="channel_common">Обычный</string>
<string name="channel_library">Библиотека</string>
<string name="channel_downloader">Загрузчик</string>
<string name="information_empty_category">У вас нет категорий. Нажмите кнопку + для начала организации вашей библиотеки.</string>
<string name="label_migration">Миграция источника</string>
<string name="label_extensions">Дополнение</string>
<string name="information_empty_category">У вас нет категорий. Нажмите кнопку + для начала организации вашей библиотеки.</string>
<string name="label_migration">Перемещение источника</string>
<string name="label_extensions">Дополнения</string>
<string name="label_extension_info">Информация о дополнении</string>
<string name="all_lang">Все</string>
<string name="ext_details">Детали</string>
@ -400,7 +398,7 @@
<string name="manga_info_latest_data_label">Обновлено</string>
<string name="copied_to_clipboard">%1$s скопорован в буфер</string>
<string name="custom_download">Загрузить определенное количество</string>
<string name="custom_hint">Количество</string>
<string name="custom_hint">количество</string>
<string name="download_custom">Загрузить другое кол-во</string>
<string name="migration_info">Нажмите, чтобы выбрать источник для миграции</string>
<string name="migration_dialog_what_to_include">Выберите данные для включения</string>
@ -408,17 +406,25 @@
<string name="migrate">Мигрировать</string>
<string name="copy">Копировать</string>
<string name="migrating">Мигрирую…</string>
<string name="source_search_options">Поисковые фильтры</string>
<string name="ext_trust">"Достоверный "</string>
<string name="ext_trust">Достоверный</string>
<string name="pager_viewer">Страница</string>
<string name="source_not_installed">Источник не установлен: %1$s</string>
<string name="repeating">Перечитываю</string>
<string name="track_status">Статус</string>
<string name="track_start_date">Начато</string>
<string name="track_type">Тип</string>
<string name="track_author">Автор</string>
<string name="url_not_set">"Ссылка не установлена, пожалуйста нажмите на заголовок и выберите мангу снова "</string>
</resources>
<string name="url_not_set">"Ссылка манги не установлена, пожалуйста нажмите на заголовок и выберите мангу снова "</string>
<string name="transition_finished">Закончено:</string>
<string name="transition_current">Текущий:</string>
<string name="transition_next">Следующий:</string>
<string name="transition_previous">Предыдущий:</string>
<string name="transition_no_next">Следующей части нет</string>
<string name="transition_no_previous">Предыдущей части нет</string>
<string name="transition_pages_loading">Идёт загрузка страниц…</string>
<string name="transition_pages_error">Не удалось загрузить страницы: %1$s</string>
<string name="darkblue_theme">Темно-синяя тема</string>
<string name="pref_read_with_long_tap">Диалог при долгом нажатии</string>
<string name="reader_pull_up_for_more_options">Потяните вверх для раскрытия меню</string>
</resources>

View File

@ -0,0 +1,438 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="name">Nùmene</string>
<string name="categories">Categorias</string>
<string name="manga">Manga</string>
<string name="chapters">Capìtulos</string>
<string name="track">Arrastamentu</string>
<string name="history">Cronologia</string>
<string name="label_settings">Impostatziones</string>
<string name="label_download_queue">Fila de sos iscarrigamentos</string>
<string name="label_library">Sa biblioteca mea</string>
<string name="label_recent_manga">Lèghidos dae pagu</string>
<string name="label_catalogues">Catàlogos</string>
<string name="label_recent_updates">Agiornamentos de sa biblioteca</string>
<string name="label_latest_updates">Ùrtimos agiornamentos</string>
<string name="label_categories">Categorias</string>
<string name="label_selected">Ischertados: %1$d</string>
<string name="label_backup">Còpia de seguresa</string>
<string name="label_migration">Tramudòngiu de sas mitzas</string>
<string name="label_extensions">Estensiones</string>
<string name="label_extension_info">Informatziones de s\'estensione</string>
<string name="action_settings">Impostatziones</string>
<string name="action_filter">Filtru</string>
<string name="action_filter_downloaded">Iscarrigados</string>
<string name="action_filter_bookmarked">Sinnados</string>
<string name="action_filter_unread">Non lèghidos</string>
<string name="action_filter_read">Lèghidos</string>
<string name="action_filter_empty">Boga su filtru</string>
<string name="action_sort_alpha">Alfabeticamente</string>
<string name="action_sort_total">Capìtulos totales</string>
<string name="action_sort_last_read">Ùrtimos lèghidos</string>
<string name="action_sort_last_updated">Ùrtimos agiornados</string>
<string name="action_search">Chirca</string>
<string name="action_global_search">Chirca globale</string>
<string name="action_select_all">Ischerta totu</string>
<string name="action_mark_as_read">Sinna comente lèghidu</string>
<string name="action_mark_as_unread">Sinna comente non lèghidu</string>
<string name="action_mark_previous_as_read">Sinna sos imbenientes comente lèghidos</string>
<string name="action_download">Iscàrriga</string>
<string name="action_bookmark">Annanghe unu sinnalibru</string>
<string name="action_remove_bookmark">Boga su sinnalibru</string>
<string name="action_delete">Iscantzella</string>
<string name="action_update">Agiorna</string>
<string name="action_update_library">Agiorna sa biblioteca</string>
<string name="action_edit">Modìfica</string>
<string name="action_add">Annanghe</string>
<string name="action_add_category">Annanghe una categoria</string>
<string name="action_edit_categories">Modìfica sas categorias</string>
<string name="action_rename_category">Cambia su nùmene de sa categoria</string>
<string name="action_move_category">Pone in sas categorias</string>
<string name="action_edit_cover">Muda s\'immàgine de cobertedda</string>
<string name="action_sort_up">Òrdina in manera chi artziet</string>
<string name="action_sort_down">Òrdina in manera chi achirret</string>
<string name="action_show_downloaded">Iscarrigados</string>
<string name="action_next_unread">Non lèghidu imbeniente</string>
<string name="action_start">Incumintza</string>
<string name="action_stop">Firma</string>
<string name="action_pause">Pone in pàusa</string>
<string name="action_clear">Isbòida</string>
<string name="action_close">Serra</string>
<string name="action_previous_chapter">Capìtulu antepostu</string>
<string name="action_next_chapter">Capìtulu imbeniente</string>
<string name="action_retry">Torra a proare</string>
<string name="action_remove">Boga</string>
<string name="action_resume">Sighi</string>
<string name="action_move">Tràmuda</string>
<string name="action_open_in_browser">Aberi in s\'esploradore (browser)</string>
<string name="action_add_to_home_screen">Annanghe a s\'ischermada printzipale</string>
<string name="action_display_mode">Muda sa modalidade de visualizatzione</string>
<string name="action_display">Visualizatzione</string>
<string name="action_display_grid">Grìllia</string>
<string name="action_display_list">Lista</string>
<string name="action_display_download_badge">Iconas de sos iscarrigamentos</string>
<string name="action_set_filter">Imposta unu filtru</string>
<string name="action_cancel">Annulla</string>
<string name="action_sort">Òrdina</string>
<string name="action_install">Installa</string>
<string name="action_share">Cumpartzi</string>
<string name="action_save">Sarva</string>
<string name="action_reset">Torra a impostare</string>
<string name="action_undo">Iscontza</string>
<string name="action_export">Esporta</string>
<string name="action_open_log">Aberi su registru</string>
<string name="action_create">Crea</string>
<string name="action_restore">Riprìstina</string>
<string name="action_open">Aberi</string>
<string name="action_login">Intra</string>
<string name="deleting">Iscantzellende…</string>
<string name="loading">Carrighende…</string>
<string name="app_not_available">Aplicatzione non disponìbile</string>
<string name="short_recent_updates">Agiornamentos</string>
<string name="pref_category_general">Generales</string>
<string name="pref_category_reader">Leghidore</string>
<string name="pref_category_downloads">Iscarrigamentos</string>
<string name="pref_category_sources">Mitzas</string>
<string name="pref_category_tracking">Arrastamentu</string>
<string name="pref_category_advanced">Avantzadas</string>
<string name="pref_category_about">Informatziones</string>
<string name="pref_library_columns">Manga de sa libreria pro riga</string>
<string name="portrait">Orientamentu verticale</string>
<string name="landscape">Orientamentu orizontale</string>
<string name="default_columns">Predefinidu</string>
<string name="pref_library_update_interval">Frecuèntzia de agiornamentu de sa biblioteca</string>
<string name="update_never">Manuale</string>
<string name="update_1hour">Cada ora</string>
<string name="update_2hour">Cada 2 oras</string>
<string name="update_3hour">Cada 3 oras</string>
<string name="update_6hour">Cada 6 oras</string>
<string name="update_12hour">Cada 12 oras</string>
<string name="update_24hour">Cada die</string>
<string name="update_48hour">Cada 2 dies</string>
<string name="update_weekly">Cada chida</string>
<string name="update_monthly">Cada mese</string>
<string name="pref_library_update_categories">Categorias de incluire in s\'agiornamentu globale</string>
<string name="all">Totus</string>
<string name="pref_library_update_restriction">Restritziones a s\'agiornamentu de sa biblioteca</string>
<string name="pref_library_update_restriction_summary">Agiorna petzi cando sas cunditziones benint rispetadas</string>
<string name="wifi">Wi-Fi</string>
<string name="charging">Carrighende</string>
<string name="pref_update_only_non_completed">Agiorna sos manga in cursu ebbia</string>
<string name="pref_auto_update_manga_sync">Sincroniza sos capìtulos a pustis de sa leghidura</string>
<string name="pref_theme">Tema de s\'aplicatzione</string>
<string name="light_theme">Tema printzipale</string>
<string name="dark_theme">Tema iscuru</string>
<string name="amoled_theme">Tema AMOLED</string>
<string name="darkblue_theme">Biaitu iscuru</string>
<string name="pref_start_screen">Ischermada de incumintzu</string>
<string name="pref_language">Limba</string>
<string name="system_default">Predefinida de su sistema</string>
<string name="default_category">Categoria predefinida</string>
<string name="default_category_summary">Pedi semper</string>
<string name="all_lang">Totus</string>
<string name="ext_details">Detàllios</string>
<string name="ext_update">Agiorna</string>
<string name="ext_install">Installa</string>
<string name="ext_pending">Isetende</string>
<string name="ext_downloading">Iscarrighende</string>
<string name="ext_installing">Installende</string>
<string name="ext_installed">Installada</string>
<string name="ext_trust">Mi fido</string>
<string name="ext_untrusted">Nun mi fido</string>
<string name="ext_uninstall">Disinstalla</string>
<string name="ext_preferences">Preferèntzias</string>
<string name="ext_available">Disponìbile</string>
<string name="untrusted_extension">Estensione non afidàbile</string>
<string name="untrusted_extension_message">Custa estensione est istada firmada cun unu tzertificadu chi no est afidàbile e no est istada ativada.
\n
\nUn\'estensione mala diat pòdere lèghere totu sas informatziones de atzessu sarvadas in Tachiyomi o fàghere eseguire còdighe arbitràriu.
\n
\nPonende fidùtzia in custu tzertificadu atzetas custos arriscos.</string>
<string name="ext_version_info">Versione: %1$s</string>
<string name="ext_language_info">Limba: %1$s</string>
<string name="ext_empty_preferences">Non bi sunt preferèntzias de modificare pro custa estensione</string>
<string name="pref_fullscreen">Ischermu intreu</string>
<string name="pref_lock_orientation">Bloca s\'orientamentu</string>
<string name="pref_page_transitions">Transitziones de sas pàginas</string>
<string name="pref_double_tap_anim_speed">Lestresa de s\'animatzione de su tocu dòpiu</string>
<string name="pref_show_page_number">Ammustra su nùmeru de sa pàgina</string>
<string name="pref_crop_borders">Sega sos oros</string>
<string name="pref_custom_brightness">Imprea una luminosidade personalizada</string>
<string name="pref_custom_color_filter">Imprea unu filtru de colore personalizadu</string>
<string name="pref_keep_screen_on">Mantene s\'ischermu allutu</string>
<string name="pref_reader_navigation">Navigatzione</string>
<string name="pref_read_with_volume_keys">Teclas de su volume</string>
<string name="pref_read_with_volume_keys_inverted">Fùrria sas teclas de su volume</string>
<string name="pref_read_with_tapping">Tocu sìngulu</string>
<string name="pref_read_with_long_tap">Ventana cun su tocu longu</string>
<string name="pref_reader_theme">Colore de isfundu</string>
<string name="white_background">Arbu/biancu</string>
<string name="black_background">Nieddu</string>
<string name="pref_viewer_type">Òrdine de leghidura</string>
<string name="default_viewer">Predefinidu</string>
<string name="left_to_right_viewer">Dae manca a destra</string>
<string name="right_to_left_viewer">Dae destra a manca</string>
<string name="vertical_viewer">Verticale</string>
<string name="webtoon_viewer">Webtoon</string>
<string name="pager_viewer">Impaginadore</string>
<string name="pref_image_decoder">Decodificadore de immàgines</string>
<string name="pref_image_scale_type">Casta de iscala</string>
<string name="scale_type_fit_screen">Adata a s\'ischermu</string>
<string name="scale_type_stretch">Prena s\'ischermu</string>
<string name="scale_type_fit_width">Adata a sa largària</string>
<string name="scale_type_fit_height">Adata a s\'artària</string>
<string name="scale_type_original_size">Mannària originale</string>
<string name="scale_type_smart_fit">Adatamentu intelligente</string>
<string name="pref_zoom_start">Positzione de incumintzu de s\'ismanniamentu</string>
<string name="zoom_start_automatic">Automàtica</string>
<string name="zoom_start_left">A manca</string>
<string name="zoom_start_right">A destra</string>
<string name="zoom_start_center">In su tzentru</string>
<string name="double_tap_anim_speed_0">Peruna animatzione</string>
<string name="double_tap_anim_speed_normal">Normale</string>
<string name="double_tap_anim_speed_fast">Lestra</string>
<string name="pref_rotation_type">Rotatzione</string>
<string name="rotation_free">Lìbera</string>
<string name="rotation_lock">Blocada</string>
<string name="rotation_force_portrait">Bloca in verticale</string>
<string name="rotation_force_landscape">Bloca in orizontale</string>
<string name="color_filter_r_value">R</string>
<string name="color_filter_g_value">G</string>
<string name="color_filter_b_value">B</string>
<string name="color_filter_a_value">A</string>
<string name="pref_download_directory">Cartella de sos iscarrigamentos</string>
<string name="pref_download_only_over_wifi">Iscàrriga petzi impreende su WiFi</string>
<string name="pref_remove_after_marked_as_read">Iscantzella cando est marcadu comente non lèghidu</string>
<string name="pref_remove_after_read">Iscantzella a pustis de sa leghidura</string>
<string name="custom_dir">Cartella personalizada</string>
<string name="disabled">Disabilitadu</string>
<string name="last_read_chapter">Leghe s\'ùrtimu capìtulu</string>
<string name="second_to_last">Penùrtimu capìtulu</string>
<string name="third_to_last">Tertzùrtimu capìtulu</string>
<string name="fourth_to_last">Cuartùrtimu capìtulu</string>
<string name="fifth_to_last">Cuintùrtimu capìtulu</string>
<string name="pref_download_new">Iscàrriga sos capìtulos noos</string>
<string name="pref_download_new_categories">Categorias de incluire in s\'iscarrigamentu</string>
<string name="services">Servìtzios</string>
<string name="backup">Còpia de seguresa</string>
<string name="pref_create_backup">Crea una còpia de seguresa</string>
<string name="pref_create_backup_summ">Podet èssere impreada pro ripristinare sa libreria atuale</string>
<string name="pref_restore_backup">Riprìstina una còpia de seguresa</string>
<string name="pref_restore_backup_summ">Riprìstina sa biblioteca dae una còpia de seguresa</string>
<string name="pref_backup_directory">Cartella de sa còpia de seguresa</string>
<string name="pref_backup_service_category">Servìtziu</string>
<string name="pref_backup_interval">Frecuèntzia de sarvatàgiu de sas còpias de seguresa</string>
<string name="pref_backup_slots">Nùmeru màssimu de còpias automàticas</string>
<string name="dialog_restoring_backup">Ripristinende sa còpia de seguresa
\n%1$s annantu a sa biblioteca</string>
<string name="source_not_found">Mitza no agatada</string>
<string name="dialog_restoring_source_not_found">Ripristinende sa còpia de seguresa
\n%1$s mitza no agatada</string>
<string name="backup_created">Còpia de seguresa creada</string>
<string name="restore_completed">Riprìstinu acabadu</string>
<string name="error_opening_log">Impossìbile abèrrere su registru</string>
<string name="restore_completed_content">Su riprìstinu est duradu %1$s.
\n%2$s errores agatados.</string>
<string name="backup_restore_content">Su riprìstinu impreat sa mitza pro otènnere sos datos, bi diant pòdere èssere costos de s\'operadore.
\nAssegura·ti fintzas de àere fatu s\'atzessu pro sas mitzas chi lu pedint in antis de ripristinare.</string>
<string name="file_saved">Documentu sarvadu in %1$s</string>
<string name="backup_choice">De ite cheres fàghere una còpia de seguresa\?</string>
<string name="restoring_backup">Ripristinende sa còpia de seguresa</string>
<string name="creating_backup">Creende sa còpia de seguresa</string>
<string name="pref_clear_chapter_cache">Isbòida sa memòria temporànea de sos capìtulos</string>
<string name="used_cache">Impreados: %1$s</string>
<string name="cache_deleted">Memòria temporànea isbodiada. %1$d documentos sunt istados iscantzellados</string>
<string name="cache_delete_error">B\'at àpidu un\'errore durante s\'isbodiamentu de sa memòria temporànea</string>
<string name="pref_clear_cookies">Iscantzella sos cookies</string>
<string name="cookies_cleared">Cookies iscantzellados</string>
<string name="choices_reset">Reseta sos issèberos de diàlogu</string>
<string name="pref_clear_database">Isbòida sa base de datos</string>
<string name="pref_clear_database_summary">Iscantzella sos manga e sos capìtulos chi non sunt in sa biblioteca tua</string>
<string name="clear_database_confirmation">Seguru ses\? Sos capìtulos lèghidos e su progressu de sos mangas chi non sunt in sa biblioteca s\'ant a pèrdere</string>
<string name="clear_database_completed">Boghes iscantzelladas</string>
<string name="pref_refresh_library_metadata">Agiorna sos metadatos de sa biblioteca</string>
<string name="pref_refresh_library_metadata_summary">Agiornat sas coberteddas, sos gèneres, sa descritzione e sas informatziones de istadu de sos manga</string>
<string name="pref_refresh_library_tracking">Agiorna sos metadatos de arrastamentu</string>
<string name="pref_refresh_library_tracking_summary">Agiornat s\'istadu, su votu e s\'ùrtimu capìtulu lèghidu dae sos servìtzios de arrastamentu</string>
<string name="version">Versione</string>
<string name="build_time">Data de compilatzione</string>
<string name="pref_enable_automatic_updates">Chirca agiornamentos</string>
<string name="pref_enable_automatic_updates_summary">Chirca automaticamente agiornamentos de s\'aplicatzione</string>
<string name="pref_enable_acra">Imbia raportos a pitzu de sos arrestos anòmalos</string>
<string name="pref_acra_summary">Agiudat a acontzare cale si siat faddina. Perunu datu sensìbile at a èssere imbiadu</string>
<string name="login_title">Intrada pro %1$s</string>
<string name="username">Nùmene impreadore</string>
<string name="password">Crae de intrada</string>
<string name="show_password">Ammustra sa crae</string>
<string name="login">Intra</string>
<string name="login_success">S\'intrada at tentu sutzessu</string>
<string name="invalid_login">Errore de atzessu</string>
<string name="unknown_error">Errore disconnotu</string>
<string name="library_search_hint">Tìtulu o autore…</string>
<string name="updating_category">Agiornende sa categoria</string>
<string name="local_source_badge">Locale</string>
<string name="confirm_delete_manga">Ses seguru de chèrrere bogare sos manga ischertados\?</string>
<string name="also_delete_chapters">Iscantzella fintzas sos capìtulos iscarrigados</string>
<string name="source_search_options">Filtros de chirca</string>
<string name="source_requires_login">Custa mitza ti pedit de fàghere s\'atzessu</string>
<string name="select_source">Ischerta una mitza</string>
<string name="no_valid_sources">Pro praghere abìlita a su mancu una mitza vàlida</string>
<string name="no_more_results">Non bi sunt àteros risultados</string>
<string name="local_source">Manga locale</string>
<string name="other_source">Àteru</string>
<string name="invalid_combination">Predefinidu non podet èssere ischertadu cun àteras categorias</string>
<string name="added_to_library">Su manga est istadu annantu a sa biblioteca tua</string>
<string name="action_global_search_hint">Chirca globale…</string>
<string name="no_results">Perunu risultadu agatadu!</string>
<string name="latest">Ùrtimos</string>
<string name="browse">Esplora</string>
<string name="manga_not_in_db">Custu manga est istadu bogadu dae sa base de datos!</string>
<string name="manga_detail_tab">Informatziones</string>
<string name="description">Descritzione</string>
<string name="ongoing">In cursu</string>
<string name="unknown">Disconnotu</string>
<string name="licensed">Cuntzessu in litzèntzia</string>
<string name="remove_from_library">Boga dae sa biblioteca</string>
<string name="manga_info_full_title_label">Tìtulu</string>
<string name="manga_added_library">Annantu a sa biblioteca</string>
<string name="manga_removed_library">Bogadu dae sa biblioteca</string>
<string name="manga_info_author_label">Autore</string>
<string name="manga_info_artist_label">Artista</string>
<string name="manga_info_chapters_label">Capìtulos</string>
<string name="manga_info_last_chapter_label">Ùrtimu capìtulu</string>
<string name="manga_info_latest_data_label">Agiornadu</string>
<string name="manga_info_status_label">Istadu</string>
<string name="manga_info_source_label">Mitza</string>
<string name="manga_info_genres_label">Gèneres</string>
<string name="circular_icon">Icona tzirculare</string>
<string name="rounded_icon">Icona atundada</string>
<string name="square_icon">Icona cuadrada</string>
<string name="star_icon">Icona a isteddu</string>
<string name="shortcut_title">Tìtulu de s\'incurtzadura</string>
<string name="shortcut_created">S\'incurtzadura est istada annanta a s\'ischermada printzipale tua.</string>
<string name="icon_shape">Forma de s\'icona</string>
<string name="icon_creation_fail">Creatzione de s\'incurtzadura fallida!</string>
<string name="delete_downloads_for_manga">Iscantzellare sos capìtulos iscarrigados\?</string>
<string name="copied_to_clipboard">%1$s copiadu in punta de billete</string>
<string name="source_not_installed">Mitza no installada: %1$s</string>
<string name="manga_chapters_tab">Capìtulos</string>
<string name="manga_chapter_no_title">Chene tìtulu</string>
<string name="display_mode_chapter">Capìtulu %1$s</string>
<string name="chapter_downloaded">Iscarrigadu</string>
<string name="chapter_queued">In isetu</string>
<string name="chapter_downloading">Iscarrighende</string>
<string name="chapter_downloading_progress">Iscarrighende (%1$d/%2$d)</string>
<string name="chapter_error">Errore</string>
<string name="chapter_paused">In pàusa</string>
<string name="fetch_chapters_error">Errore durante su recùperu de sos capìtulos</string>
<string name="show_title">Ammustra su tìtulu</string>
<string name="show_chapter_number">Ammustra su nùmeru de su capìtulu</string>
<string name="sorting_mode">Modalidade de ordinamentu</string>
<string name="sort_by_source">Pro mitza</string>
<string name="sort_by_number">Pro nùmeru de capìtulu</string>
<string name="manga_download">Iscàrriga</string>
<string name="custom_download">Iscàrriga una cantidade personalizada</string>
<string name="custom_hint">cantidade</string>
<string name="download_1">Iscàrriga su capìtulu imbeniente</string>
<string name="download_5">Iscàrriga sos 5 capìtulos imbenientes</string>
<string name="download_10">Iscàrriga sos 10 capìtulos imbenientes</string>
<string name="download_custom">Iscarrigamentu personalizadu</string>
<string name="download_all">Iscàrriga totu</string>
<string name="download_unread">Iscàrriga sos non lèghidos</string>
<string name="confirm_delete_chapters">Ses seguru de chèrrere iscantzellare sos capìtulos ischertados\?</string>
<string name="manga_tracking_tab">Arrastamentu</string>
<string name="reading">Leghende</string>
<string name="completed">Acabadu</string>
<string name="dropped">Abbandonadu</string>
<string name="on_hold">In pàusa</string>
<string name="plan_to_read">De lèghere</string>
<string name="repeating">Torrende a lèghere</string>
<string name="score">Votu</string>
<string name="title">Tìtulu</string>
<string name="status">Istadu</string>
<string name="track_status">Istadu</string>
<string name="track_start_date">Incumintzadu</string>
<string name="track_type">Casta</string>
<string name="track_author">Autore</string>
<string name="url_not_set">S\'url de su manga no est impostadu, pro praghere incarca in su tìtulu e ischerta torra su manga</string>
<string name="error_category_exists">Esistit giai una categoria cun custu nùmene!</string>
<string name="snack_categories_deleted">Categorias iscantzelladas</string>
<string name="dialog_with_checkbox_remove_description">Custu at a bogare sa data de leghidura de custu capìtulu. Seguru ses\?</string>
<string name="dialog_with_checkbox_reset">Reseta totu sos capìtulos pro custu manga</string>
<string name="snack_add_to_library">Annànghere custu manga a sa biblioteca\?</string>
<string name="picture_saved">Immàgine sarvada</string>
<string name="saving_picture">Sarvende s\'immàgine</string>
<string name="options">Optziones</string>
<string name="custom_filter">Filtru personalizadu</string>
<string name="set_as_cover">Imposta comente cobertedda</string>
<string name="cover_updated">Cobertedda agiornada</string>
<string name="page_downloaded">Pàgina copiada in %1$s</string>
<string name="downloading">Iscarrighende…</string>
<string name="download_progress">Iscarrigadu %1$d%%</string>
<string name="chapter_progress">Pàgina: %1$d</string>
<string name="chapter_subtitle">Capìtulu %1$s</string>
<string name="no_next_chapter">Capìtulu imbeniente no agatadu</string>
<string name="no_previous_chapter">Capìtulu antepostu no agatadu</string>
<string name="decode_image_error">No est istadu possìbile decodificare s\'immàgine</string>
<string name="confirm_update_manga_sync">Agiornare a %1$d s\'ùrtimu capìtulu lèghidu in sos servìtzios abilitados\?</string>
<string name="confirm_set_image_as_cover">Cheres impostare custa immàgine comente cobertedda\?</string>
<string name="viewer_for_this_series">Visualizadore pro custa sèrie</string>
<string name="transition_finished">Acabadu:</string>
<string name="transition_current">Atuale:</string>
<string name="transition_next">Imbeniente:</string>
<string name="transition_previous">Antepostu:</string>
<string name="transition_no_next">Non b\'at unu capìtulu imbeniente</string>
<string name="transition_no_previous">Non b\'at unu capìtulu antepostu</string>
<string name="transition_pages_loading">Carrighende pàginas…</string>
<string name="transition_pages_error">Carrigamentu de pàginas fallidu: %1$s</string>
<string name="reader_pull_up_for_more_options">Tira a susu pro àteras optziones</string>
<string name="recent_manga_source">%1$s - Cap.%2$s</string>
<string name="migration_info">Toca pro ischertare sa mitza dae sa cale migrare</string>
<string name="migration_dialog_what_to_include">Ischerta sos datos de incluire</string>
<string name="select">Ischerta</string>
<string name="migrate">Mìgra</string>
<string name="copy">Còpia</string>
<string name="migrating">Migrende…</string>
<string name="download_queue_error">Bat àpidu un\'errore in siscarrigamentu de sos capìtulos. Podes torrare a proare in sa setzione de sos iscarrigamentos</string>
<string name="notification_update_progress">Progressu de s\'agiornamentu: %1$d/%2$d</string>
<string name="notification_new_chapters">Capìtulos noos agatados</string>
<string name="notification_new_chapters_text">Pro %1$d tìtulos</string>
<string name="notification_cover_update_failed">Agiornamentu de sa cobertedda fallidu</string>
<string name="notification_first_add_to_library">Pro praghere annanghe su manga a sa libreria tua in antis de fàghere custu</string>
<string name="notification_not_connected_to_ac_title">Sincronizatzione annullada</string>
<string name="notification_not_connected_to_ac_body">Non connessu a s\'alimentatzione</string>
<string name="notification_no_connection_title">Sincronizatzione annullada</string>
<string name="notification_no_connection_body">Connessione non disponìbile</string>
<string name="file_select_cover">Ischerta s\'immàgine de cobertedda</string>
<string name="file_select_backup">Ischerta sa còpia de seguresa</string>
<string name="file_select_icon">Ischerta s\'icona de s\'incurtzadura</string>
<string name="update_check_title">Est disponìbile un\'agiornamentu nou!</string>
<string name="update_check_confirm">Iscàrriga</string>
<string name="update_check_ignore">Ignora</string>
<string name="update_check_no_new_updates">Non bi sunt agiornamentos disponìbiles noos</string>
<string name="update_check_download_started">Iscarrigamentu incumintzadu</string>
<string name="update_check_look_for_updates">Chirchende agiornamentos</string>
<string name="update_check_notification_file_download">Iscàrriga s\'agiornamentu</string>
<string name="update_check_notification_download_in_progress">Iscarrigamentu in cursu</string>
<string name="update_check_notification_download_complete">Iscarrigamentu acabadu</string>
<string name="update_check_notification_download_error">Errore de iscarrigamentu</string>
<string name="update_check_notification_update_available">Agiornamentu disponìbile</string>
<string name="description_backdrop">Immàgine de isfundu de su manga</string>
<string name="description_cover">Cobertedda de su manga</string>
<string name="information_no_downloads">Perunu iscarrigamentu</string>
<string name="information_no_recent">Perunu capìtulu reghente</string>
<string name="information_no_recent_manga">Perunu manga lèghidu dae pagu</string>
<string name="information_empty_library">Sa biblioteca tua est bòida, podes annànghere sèries a sa biblioteca tua dae sos Catàlogos.</string>
<string name="information_empty_category">Non tenes categorias. Incarca su butone de su \"prus\" pro nde creare una pro organizare sa biblioteca tua.</string>
<string name="download_notifier_downloader_title">Iscarrigadore</string>
<string name="download_notifier_title_error">Errore</string>
<string name="download_notifier_unkown_error">B\'at àpidu un\'errore imprevistu durante s\'iscarrigamentu de su capìtulu</string>
<string name="download_notifier_page_error">Una pàgina mancat in sa cartella</string>
<string name="download_notifier_page_ready_error">Una pàgina no est istada carrigada</string>
<string name="download_notifier_text_only_wifi">Peruna connessione wifi disponìbile</string>
<string name="download_notifier_no_network">Peruna connessione de retza disponìbile</string>
<string name="download_notifier_download_paused">Iscarrigamentu in pàusa</string>
<string name="channel_common">Comunu</string>
<string name="channel_library">Biblioteca</string>
<string name="channel_downloader">Iscarrigadore</string>
</resources>

View File

@ -0,0 +1,343 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="name">Ime</string>
<string name="categories">Kategorije</string>
<string name="manga">Manga</string>
<string name="chapters">Poglavlje</string>
<string name="track">Praćenje</string>
<string name="history">Istorija</string>
<string name="label_settings">Podešavanja</string>
<string name="label_download_queue">Redosled preuzimanja</string>
<string name="label_library">Moja biblioteka</string>
<string name="label_recent_manga">Nedavno čitano</string>
<string name="label_catalogues">Katalozi</string>
<string name="label_recent_updates">Ažuriranja biblioteke</string>
<string name="label_latest_updates">Najnovija ažuriranja</string>
<string name="label_categories">Kategorije</string>
<string name="label_selected">Izabrano: %1$d</string>
<string name="label_backup">Rezerva</string>
<string name="label_migration">Migracija izvora</string>
<string name="label_extensions">Dodaci</string>
<string name="label_extension_info">Informacije o dodatku</string>
<string name="action_settings">Podešavanja</string>
<string name="action_filter">Filter</string>
<string name="action_filter_downloaded">Preuzeto</string>
<string name="action_filter_bookmarked">Zabilježeno</string>
<string name="action_filter_unread">Nepročitano</string>
<string name="action_filter_read">Pročitano</string>
<string name="action_filter_empty">Ukloni filter</string>
<string name="action_sort_alpha">Alfabetno</string>
<string name="action_sort_total">Ukupno poglavlja</string>
<string name="action_sort_last_read">Zadnje čitano</string>
<string name="action_sort_last_updated">Zadnje ažurirano</string>
<string name="action_search">Pretraži</string>
<string name="action_global_search">Pretraži globalno</string>
<string name="action_select_all">Izaberi sve</string>
<string name="action_mark_as_read">Označi kao pročitano</string>
<string name="action_mark_as_unread">Označi kao nepročitano</string>
<string name="action_mark_previous_as_read">Označi prijošnje kao pročitano</string>
<string name="action_download">Preuzmi</string>
<string name="action_bookmark">Označi</string>
<string name="action_remove_bookmark">Ukloni oznaku</string>
<string name="action_delete">Obriši</string>
<string name="action_update">Ažuriraj</string>
<string name="action_update_library">Ažuriraj biblioteku</string>
<string name="action_edit">Uredi</string>
<string name="action_add">Dodaj</string>
<string name="action_add_category">Dodaj kategoriju</string>
<string name="action_edit_categories">Uredi kategorije</string>
<string name="action_rename_category">Preimenuj kategoriju</string>
<string name="action_move_category">Premesti u kategoriju</string>
<string name="action_edit_cover">Promeni naslovnu sliku</string>
<string name="action_sort_up">Sortiraj odozgo</string>
<string name="action_sort_down">Sortiraj odozdo</string>
<string name="action_show_downloaded">Preuzeto</string>
<string name="action_next_unread">Sledeće nepročitano</string>
<string name="action_start">Počni</string>
<string name="action_stop">Zaustavi</string>
<string name="action_pause">Pauziraj</string>
<string name="action_clear">Očisti</string>
<string name="action_close">Zatvori</string>
<string name="action_previous_chapter">Prijašnje poglavlje</string>
<string name="action_next_chapter">Naredno poglavlje</string>
<string name="action_retry">Pokušaj ponovo</string>
<string name="action_remove">Obriši</string>
<string name="action_resume">Nastavi</string>
<string name="action_move">Premesti</string>
<string name="action_open_in_browser">Otvori u pretraživaču</string>
<string name="action_add_to_home_screen">Dodaj na početni ekran</string>
<string name="action_display_mode">Promijeni stanje ekrana</string>
<string name="action_display">Ekran</string>
<string name="action_display_grid">Mreža</string>
<string name="action_display_list">Lista</string>
<string name="action_display_download_badge">Oznake preuzimanja</string>
<string name="action_set_filter">Postavi filter</string>
<string name="action_cancel">Prekini</string>
<string name="action_sort">Sortiraj</string>
<string name="action_install">Instaliraj</string>
<string name="action_share">Podeli</string>
<string name="action_save">Sačuvaj</string>
<string name="action_reset">Resetuj</string>
<string name="action_undo">Vrati nazad</string>
<string name="action_export">Eksportuj</string>
<string name="action_open_log">Otvori zapisnik</string>
<string name="action_create">Napravi</string>
<string name="action_restore">Povrati</string>
<string name="action_open">Otvori</string>
<string name="action_login">Prijavi se</string>
<string name="deleting">Brisanje…</string>
<string name="loading">Učitavanje…</string>
<string name="app_not_available">Aplikacija nije dostupna</string>
<string name="short_recent_updates">Ažuriranja</string>
<string name="pref_category_general">Opšte</string>
<string name="pref_category_reader">Čitač</string>
<string name="pref_category_downloads">Preuzimanja</string>
<string name="pref_category_sources">Izvori</string>
<string name="pref_category_tracking">Praćenja</string>
<string name="pref_category_advanced">Napredno</string>
<string name="pref_category_about">O</string>
<string name="pref_library_columns">Broj Manga po redu u biblioteci</string>
<string name="portrait">Vertikalno</string>
<string name="landscape">Horizontalno</string>
<string name="default_columns">Podrazumevano</string>
<string name="pref_library_update_interval">Učestalost ažuriranja biblioteke</string>
<string name="update_never">Ručno</string>
<string name="update_1hour">Jednočasovno</string>
<string name="update_2hour">Dvočasovno</string>
<string name="update_3hour">Tročasovno</string>
<string name="update_6hour">Šestočasovno</string>
<string name="update_12hour">Dvanestočasovno</string>
<string name="update_24hour">Dnevno</string>
<string name="update_48hour">Svaka 2 dana</string>
<string name="update_weekly">Nedeljno</string>
<string name="update_monthly">Mjesečno</string>
<string name="pref_library_update_categories">Kategorije koje su ubrajane u globalnom ažuriranju</string>
<string name="all">Sve</string>
<string name="pref_library_update_restriction">Restrikcije ažuriranja biblioteke</string>
<string name="pref_library_update_restriction_summary">Ažuriraj samo kada su uslovi zadovoljeni</string>
<string name="wifi">Wi-Fi</string>
<string name="charging">Punjenje</string>
<string name="pref_update_only_non_completed">Samo ažuriraj mangu koja je u toku</string>
<string name="pref_auto_update_manga_sync">Sinhronizuj poglavlja nakon čitanja</string>
<string name="pref_theme">Tema aplikacije</string>
<string name="light_theme">Glavna tema</string>
<string name="dark_theme">Tamna tema</string>
<string name="amoled_theme">AMOLED tema</string>
<string name="darkblue_theme">Tamno plava</string>
<string name="pref_start_screen">Početni ekran</string>
<string name="pref_language">Jezik</string>
<string name="system_default">Podrazumevani jezik sistema</string>
<string name="default_category">Podrazumevana kategorija</string>
<string name="default_category_summary">Uvijek pitaj</string>
<string name="all_lang">Sve</string>
<string name="ext_details">Detalji</string>
<string name="ext_update">Ažuriraj</string>
<string name="ext_install">Instaliraj</string>
<string name="ext_pending">U toku</string>
<string name="ext_downloading">Preuzima se</string>
<string name="ext_installing">Instaliranje</string>
<string name="ext_installed">Instalirano</string>
<string name="ext_trust">Veruj</string>
<string name="ext_untrusted">Ne veruj</string>
<string name="ext_uninstall">Izbriši</string>
<string name="ext_preferences">Prefrence</string>
<string name="ext_available">Dostupno</string>
<string name="untrusted_extension">Nepouzdan dodatak</string>
<string name="untrusted_extension_message">Ovaj dodatak je potpisan nepovjerljivim sertifikatima i nije aktiviran,
\n
\nŠtetni dodaci mogu čitati podatke o prijavi sačuvane u Tachiyomi-u ili pokrenuti proizvoljan kod.
\n
\nVjerujući ovom sertifikatu vi prihvatate rizike.
\n</string>
<string name="ext_version_info">Verzija: %1$s</string>
<string name="ext_language_info">Jezik: %1$s</string>
<string name="ext_empty_preferences">Nema prefrenca za podešavanje na ovom dodatku</string>
<string name="pref_fullscreen">Ceo ekran</string>
<string name="pref_lock_orientation">Zaključaj orjentaciju</string>
<string name="pref_page_transitions">Prelaz stranica</string>
<string name="pref_double_tap_anim_speed">Brzina animacije dvoklika</string>
<string name="pref_show_page_number">Prikaži broj stranice</string>
<string name="pref_crop_borders">Iseci krajeve</string>
<string name="pref_custom_brightness">Koristi posebnu osvjetljenost</string>
<string name="pref_custom_color_filter">Koristi poseban filter boja</string>
<string name="pref_keep_screen_on">Ostavi ekran upaljen</string>
<string name="pref_reader_navigation">Navigacija</string>
<string name="pref_read_with_volume_keys">Dugmići za zvuk</string>
<string name="pref_read_with_volume_keys_inverted">Invertuj dugmiće za zvuk</string>
<string name="pref_read_with_tapping">Tapkanje</string>
<string name="pref_reader_theme">Boja pozadine</string>
<string name="white_background">Bela</string>
<string name="black_background">Crna</string>
<string name="pref_viewer_type">Podrazumevani pregledač</string>
<string name="default_viewer">Podrazumevano</string>
<string name="left_to_right_viewer">S leva na desno</string>
<string name="right_to_left_viewer">S desna na levo</string>
<string name="vertical_viewer">Verticalno</string>
<string name="webtoon_viewer">"Webtoon "</string>
<string name="pager_viewer">Stranično</string>
<string name="pref_image_decoder">Dekoder slika</string>
<string name="pref_image_scale_type">Tip skaliranja</string>
<string name="scale_type_fit_screen">Popuni ekran</string>
<string name="scale_type_stretch">Razvuci</string>
<string name="scale_type_fit_width">Popuni širinu</string>
<string name="scale_type_fit_height">Popuni visinu</string>
<string name="scale_type_original_size">Originalna veličina</string>
<string name="scale_type_smart_fit">Pametno popunjavanje</string>
<string name="pref_zoom_start">Uvećana početna pozicija</string>
<string name="zoom_start_automatic">Automatsko</string>
<string name="zoom_start_left">Levo</string>
<string name="zoom_start_right">Desno</string>
<string name="zoom_start_center">Sredina</string>
<string name="double_tap_anim_speed_0">Bez animacija</string>
<string name="double_tap_anim_speed_normal">Normalno</string>
<string name="double_tap_anim_speed_fast">Brzo</string>
<string name="pref_rotation_type">Rotacija</string>
<string name="rotation_free">Slovodno</string>
<string name="rotation_lock">Zaključano</string>
<string name="rotation_force_portrait">Forsirano vertikalno</string>
<string name="rotation_force_landscape">Forsirano horizontalno</string>
<string name="color_filter_r_value">"R "</string>
<string name="color_filter_g_value">G</string>
<string name="color_filter_b_value">B</string>
<string name="color_filter_a_value">A</string>
<string name="pref_download_directory">Direktorijum preuzimanja</string>
<string name="pref_download_only_over_wifi">Preuzimaj samo putem Wi-Fi -a</string>
<string name="pref_remove_after_marked_as_read">Obriši kada je označeno kao pročitano</string>
<string name="pref_remove_after_read">Obriši nakon čitanja</string>
<string name="custom_dir">Poseban direktorijum</string>
<string name="disabled">Onemogućeno</string>
<string name="last_read_chapter">Poslednje pročitano poglavlje</string>
<string name="second_to_last">Predzadnje pročitano poglavlje</string>
<string name="third_to_last">Pred-predzadnje pročitano poglavlje</string>
<string name="fourth_to_last">Četiri prije pročitanog poglavlja</string>
<string name="fifth_to_last">Pet do pročitanog poglavlja</string>
<string name="pref_download_new">Preuzmi nova poglavlja</string>
<string name="pref_download_new_categories">Kategorije ubrajane u preuzimanju</string>
<string name="services">Servisi</string>
<string name="backup">Rezerna kopija</string>
<string name="pref_create_backup">Napravi rezernu kopiju</string>
<string name="pref_create_backup_summ">Može biti korišćeno da vrati trenutnu biblioteku</string>
<string name="pref_restore_backup">Vrati rezernu kopiju</string>
<string name="pref_restore_backup_summ">Vrati biblioteku iz fajla rezerne kopije</string>
<string name="pref_backup_directory">Direktorijum rezernih kopija</string>
<string name="pref_backup_service_category">Servis</string>
<string name="pref_backup_interval">Učestalost pravljenja rezernih kopija</string>
<string name="pref_backup_slots">Maksimalano automatskih rezernih kopija</string>
<string name="dialog_restoring_backup">Vraćanje rezerne kopije
\n%1$s dodat u biblioteku</string>
<string name="source_not_found">Izvor nije pronađen</string>
<string name="dialog_restoring_source_not_found">Vraćanje rezerne kopije
\n%1$s izvor nije pronađen</string>
<string name="backup_created">Rezerna kopija napravljena</string>
<string name="restore_completed">Vraćanje završeno</string>
<string name="error_opening_log">Ne mogu otvoriti zapisnik</string>
<string name="restore_completed_content">Vraćanju trebalo %1$s.
\n%2$s grešaka pronađeno.</string>
<string name="backup_restore_content">Vraćanja koriste izvore da dobiju podatke, troškovi prenošenja se mogu primijeniti.
\nTakođe budite sigurni da se tačno prijavljeni na izvorima koji je to potrebno prije vraćanja.</string>
<string name="file_saved">Fajl sačuvan na %1$s</string>
<string name="backup_choice">\?Šta želite da stavite u rezernu kopiju\?</string>
<string name="restoring_backup">Vraćanje rezerne kopije</string>
<string name="creating_backup">Pravljenje rezerne kopije</string>
<string name="pref_clear_chapter_cache">Izbriši keš poglavlja</string>
<string name="used_cache">Koristio: %1$s</string>
<string name="cache_deleted">Keš izbrisan, %1$d fajlova je izbrisano</string>
<string name="cache_delete_error">Greška se desila tokom brisanja keša</string>
<string name="pref_clear_cookies">Izbriši kolačiće</string>
<string name="cookies_cleared">Kolačići izbrisani</string>
<string name="choices_reset">Izbori dialoga resetovani</string>
<string name="pref_clear_database">Izbriši baze podataka</string>
<string name="pref_clear_database_summary">Izbriši mange i poglavlja koji nisu u vašoj biblioteci</string>
<string name="clear_database_confirmation">Da li ste sigurni\? Pročitana poglavlja i progres manga koje nisu u biblioteci će biti izgubljen</string>
<string name="clear_database_completed">Unosi izbrisani</string>
<string name="pref_refresh_library_metadata">Osvježi metada biblioteke</string>
<string name="pref_refresh_library_metadata_summary">Ažuriraj naslovnice, žanrove, deskripcije i status informacije o mangama</string>
<string name="pref_refresh_library_tracking">Osvježi metadatu praćenja</string>
<string name="pref_refresh_library_tracking_summary">Ažuriraj status, ocenu i poslednje poglavlje pročitano na izvorima praćenja</string>
<string name="version">Verzija</string>
<string name="build_time">Vrijema pravljenja</string>
<string name="pref_enable_automatic_updates">Promjeri za nova ažuriranja</string>
<string name="pref_enable_automatic_updates_summary">"Automatski proveri za nova ažuriranje aplikacije "</string>
<string name="pref_enable_acra">Pošalji izveštaje grešaka</string>
<string name="pref_acra_summary">Pomozi u popravljanju bugova. Nijedan sensitivan podatak neće biti poslat</string>
<string name="login_title">Prijavi se za %1$s</string>
<string name="username">Korisničko ime</string>
<string name="password">Lozinka</string>
<string name="show_password">Prikaži lozinku</string>
<string name="login">Prijavi se</string>
<string name="login_success">Prijava uspješna</string>
<string name="invalid_login">Prijava neuspešna</string>
<string name="unknown_error">Nepoznata greška</string>
<string name="library_search_hint">Ime ili autor…</string>
<string name="updating_category">Ažuriranje kategorije</string>
<string name="local_source_badge">Lokalno</string>
<string name="confirm_delete_manga">Da li ste sigurni da želite da uklonite označenu mangu\?</string>
<string name="also_delete_chapters">Takođe obriši preuzeta poglavlja</string>
<string name="source_search_options">Filteri pretrage</string>
<string name="source_requires_login">Na ovom izvoru je potrebno prijaviti se</string>
<string name="select_source">Izaberi izvor</string>
<string name="no_valid_sources">Molimo izaberite bar jedan validan izvor</string>
<string name="no_more_results">Nema više rezultata</string>
<string name="local_source">Lokalna manga</string>
<string name="other_source">Ostalo</string>
<string name="invalid_combination">Opšte je nemoguće označiti sa ostalim kategorijama</string>
<string name="added_to_library">Ova manga je dodata u biblioteku</string>
<string name="action_global_search_hint">Globalno pretraživanje…</string>
<string name="no_results">Nema pronađenih rezultata!</string>
<string name="latest">Poslednje</string>
<string name="browse">Pretraži</string>
<string name="manga_not_in_db">Ova manga je uklonjena iz baze podataka!</string>
<string name="manga_detail_tab">Informacije</string>
<string name="description">Deskripcija</string>
<string name="ongoing">U toku</string>
<string name="unknown">Nepoznato</string>
<string name="licensed">Licencirana</string>
<string name="remove_from_library">Obriši iz biblioteke</string>
<string name="manga_info_full_title_label">Ime</string>
<string name="manga_added_library">Dodato u biblioteku</string>
<string name="manga_removed_library">Uklonjeno iz biblioteke</string>
<string name="manga_info_author_label">Autor</string>
<string name="manga_info_artist_label">Umjetnik</string>
<string name="manga_info_chapters_label">Poglavlja</string>
<string name="manga_info_last_chapter_label">Poslednje poglavlje</string>
<string name="manga_info_latest_data_label">Ažurirano</string>
<string name="manga_info_status_label">Status</string>
<string name="manga_info_source_label">Izvor</string>
<string name="manga_info_genres_label">Žanr</string>
<string name="circular_icon">Kružna ikonica</string>
<string name="rounded_icon">Okrugla ikonica</string>
<string name="square_icon">Kvadratasta ikonica</string>
<string name="star_icon">Zvezdasta ikonica</string>
<string name="shortcut_title">Ime prečice</string>
<string name="shortcut_created">Prečica je postavljena na vaš početni ekran.</string>
<string name="icon_shape">Oblik ikonice</string>
<string name="icon_creation_fail">Neuspeh tokom kreiranja ikonice!</string>
<string name="delete_downloads_for_manga">Obriši preuzeta poglavlja\?</string>
<string name="copied_to_clipboard">%1$s je kopiran</string>
<string name="source_not_installed">Izvor nije instaliran: %1$s</string>
<string name="manga_chapters_tab">Poglavlja</string>
<string name="manga_chapter_no_title">Nema naslova</string>
<string name="display_mode_chapter">Poglavlje %1$s</string>
<string name="chapter_downloaded">Preuzeto</string>
<string name="chapter_queued">U redu za preuzimanje</string>
<string name="chapter_downloading">Preuzima se</string>
<string name="chapter_downloading_progress">Preuzimam (%1$d/%2$d)</string>
<string name="chapter_error">Greška</string>
<string name="chapter_paused">Pauzirano</string>
<string name="fetch_chapters_error">Greška tokom dobijanja poglavlja</string>
<string name="show_title">Prikaži naslov</string>
<string name="show_chapter_number">Prikaži broj poglavlja</string>
<string name="sorting_mode">Model sortiranja</string>
<string name="pref_read_with_long_tap">Dialog kod dugog pritiska</string>
<string name="sort_by_source">Prema izvoru</string>
<string name="sort_by_number">Prema broju poglavlja</string>
<string name="manga_download">Preuzmi</string>
<string name="custom_download">Preuzmi određen broj</string>
<string name="custom_hint">količina</string>
<string name="download_1">Preuzmi sledeće poglavlje</string>
<string name="download_5">Preuzmi 5 narednih poglavlja</string>
<string name="download_10">Preuzmi 10 narednih poglavlja</string>
<string name="download_custom">Preuzmi određeno</string>
<string name="download_all">Preuzmi sve</string>
<string name="download_unread">Preuzmi nepročitano</string>
</resources>

View File

@ -0,0 +1,475 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources><string name="name">Namn</string>
<string name="categories">Kategorier</string>
<string name="manga">Manga</string>
<string name="chapters">Kapitel</string>
<string name="track">Spårning</string>
<string name="history">Historik</string>
<string name="label_settings">Inställningar</string>
<string name="label_download_queue">Nedladdningskö</string>
<string name="label_library">Mitt bibliotek</string>
<string name="label_recent_manga">Nyligen läst</string>
<string name="label_catalogues">Kataloger</string>
<string name="label_recent_updates">Bibliotek uppdateringar</string>
<string name="label_latest_updates">Senaste uppdateringarna</string>
<string name="label_categories">Kategorier</string>
<string name="label_selected">Vald: %1$d</string>
<string name="label_backup">Backup</string>
<string name="label_migration">Källmigrering</string>
<string name="label_extensions">Tillägg</string>
<string name="label_extension_info">Tilläggsinformation</string>
<string name="action_settings">Inställningar</string>
<string name="action_filter">Filter</string>
<string name="action_filter_downloaded">Nedladdat</string>
<string name="action_filter_bookmarked">Bokmärkt</string>
<string name="action_filter_unread">Oläst</string>
<string name="action_filter_read">Läst</string>
<string name="action_filter_empty">Ta bort filtret</string>
<string name="action_sort_alpha">Alfabetiskt</string>
<string name="action_sort_total">Totalt kapitel</string>
<string name="action_sort_last_read">Senast läst</string>
<string name="action_sort_last_updated">Senast uppdaterad</string>
<string name="action_search">Sök</string>
<string name="action_global_search">Global sökning</string>
<string name="action_select_all">Välj alla</string>
<string name="action_mark_as_read">Markera som läst</string>
<string name="action_mark_as_unread">Markera som oläst</string>
<string name="action_mark_previous_as_read">Markera tidigare som läst</string>
<string name="action_download">Ladda ner</string>
<string name="action_bookmark">Bokmärke</string>
<string name="action_remove_bookmark">Ta bort bokmärke</string>
<string name="action_delete">Radera</string>
<string name="action_update">Uppdatera</string>
<string name="action_update_library">Uppdatera biblioteket</string>
<string name="action_edit">Redigera</string>
<string name="action_add">Lägg till</string>
<string name="action_add_category">Lägg till kategori</string>
<string name="action_edit_categories">Redigera kategorier</string>
<string name="action_rename_category">Byt namn på kategori</string>
<string name="action_move_category">Flytta till kategorier</string>
<string name="action_edit_cover">Redigera omslagsbilden</string>
<string name="action_sort_up">Sortera upp</string>
<string name="action_sort_down">Sortera ner</string>
<string name="action_show_downloaded">Nedladdat</string>
<string name="action_next_unread">Nästa olästa</string>
<string name="action_start">Start</string>
<string name="action_stop">Stop</string>
<string name="action_pause">Paus</string>
<string name="action_clear">Rensa</string>
<string name="action_close">Stäng</string>
<string name="action_previous_chapter">Föregående kapitel</string>
<string name="action_next_chapter">Nästa kapitel</string>
<string name="action_retry">Försök igen</string>
<string name="action_remove">Ta bort</string>
<string name="action_resume">Återuppta</string>
<string name="action_move">Flytta</string>
<string name="action_open_in_browser">Öppna i webbläsaren</string>
<string name="action_add_to_home_screen">Lägg till på hemskärmen</string>
<string name="action_display_mode">Ändra visningsläge</string>
<string name="action_display">Visa</string>
<string name="action_display_grid">Rutnät</string>
<string name="action_display_list">Lista</string>
<string name="action_display_download_badge">Nedladdningsmärken</string>
<string name="action_set_filter">Ställ in filter</string>
<string name="action_cancel">Avbryt</string>
<string name="action_sort">Sortera</string>
<string name="action_install">Installera</string>
<string name="action_share">Dela</string>
<string name="action_save">Spara</string>
<string name="action_reset">Återställ</string>
<string name="action_undo">Ånga</string>
<string name="action_export">Exportera</string>
<string name="action_open_log">Öppna logg</string>
<string name="action_create">Skapa</string>
<string name="action_restore">Återställ</string>
<string name="action_open">Öppna</string>
<string name="action_login">Logga in</string>
<string name="deleting">Tar bort…</string>
<string name="loading">Laddar…</string>
<string name="app_not_available">Programmet är inte tillgänglig</string>
<string name="short_recent_updates">Uppdateringar</string>
<string name="pref_category_general">Allmänt</string>
<string name="pref_category_reader">Läsare</string>
<string name="pref_category_downloads">Nedladdningar</string>
<string name="pref_category_sources">Källor</string>
<string name="pref_category_tracking">Spårning</string>
<string name="pref_category_advanced">Avancerad</string>
<string name="pref_category_about">Om appen</string>
<string name="pref_library_columns">Bibilioteksmanga per rad</string>
<string name="portrait">Stående</string>
<string name="landscape">Liggande</string>
<string name="default_columns">Standard</string>
<string name="pref_library_update_interval">Bibliotekets uppdateringsfrekvens</string>
<string name="update_never">Manuell</string>
<string name="update_1hour">Varje timme</string>
<string name="update_2hour">Varannan timme</string>
<string name="update_3hour">Var tredje timme</string>
<string name="update_6hour">Var 6:e timme</string>
<string name="update_12hour">Var 12:e timme</string>
<string name="update_24hour">Dagligen</string>
<string name="update_48hour">Varannan dag</string>
<string name="update_weekly">Varje vecka</string>
<string name="update_monthly">Varje månad</string>
<string name="pref_library_update_categories">Kategorier som ska inkluderas i global uppdatering</string>
<string name="all">Alla</string>
<string name="pref_library_update_restriction">Biblioteks uppdateringsrestriktioner</string>
<string name="pref_library_update_restriction_summary">Uppdatera endast när vilkoren är uppfyllda</string>
<string name="wifi">WiFi</string>
<string name="charging">Laddning</string>
<string name="pref_update_only_non_completed">Uppdatera endast pågående manga</string>
<string name="pref_auto_update_manga_sync">Synkronisera kapitel efter läsning</string>
<string name="pref_theme">Programtema</string>
<string name="light_theme">Huvudtema</string>
<string name="dark_theme">Mörkt tema</string>
<string name="amoled_theme">AMOLED tema</string>
<string name="darkblue_theme">Mörkblå</string>
<string name="pref_start_screen">Startskärm</string>
<string name="pref_language">Språk</string>
<string name="system_default">System standard</string>
<string name="default_category">Standard kategori</string>
<string name="default_category_summary">Fråga alltid</string>
<string name="all_lang">Alla</string>
<string name="ext_details">Detaljer</string>
<string name="ext_update">Uppdatera</string>
<string name="ext_install">Installera</string>
<string name="ext_pending">Väntade</string>
<string name="ext_downloading">Hämtar</string>
<string name="ext_installing">Installerar</string>
<string name="ext_installed">Installerad</string>
<string name="ext_trust">Förtroende</string>
<string name="ext_untrusted">Opålitlig</string>
<string name="ext_uninstall">Avinstallera</string>
<string name="ext_preferences">Inställningar</string>
<string name="ext_available">Tillgänglig</string>
<string name="untrusted_extension">Opålitlig extension</string>
<string name="untrusted_extension_message">Detta tillägg tecknades med ett otillförlitligt certifikat och var inte aktiverat.
\n
\nEtt skadligt tillägg kan läsa inloggningsuppgifter som är lagrade i Tachiyomi eller utföra godtycklig kod.
\n
\nGenom att lita på detta certifikat accepterar du dessa risker.</string>
<string name="ext_version_info">Version: %1$s</string>
<string name="ext_language_info">Språk: %1$s</string>
<string name="ext_empty_preferences">Det finns inga inställningar för detta tillägg</string>
<string name="pref_fullscreen">Fullskärm</string>
<string name="pref_lock_orientation">Lås orientering</string>
<string name="pref_page_transitions">Sidövergångar</string>
<string name="pref_double_tap_anim_speed">Dubbelklicka animationshastighet</string>
<string name="pref_show_page_number">Visa sidnummer</string>
<string name="pref_crop_borders">Beskär kanter</string>
<string name="pref_custom_brightness">Använd egen ljusstyrka</string>
<string name="pref_custom_color_filter">Använd eget färgfilter</string>
<string name="pref_keep_screen_on">Håll skärmen på</string>
<string name="pref_reader_navigation">Navigering</string>
<string name="pref_read_with_volume_keys">Volymknapparna</string>
<string name="pref_read_with_volume_keys_inverted">Invertera volymknapparna</string>
<string name="pref_read_with_tapping">Tryckning</string>
<string name="pref_reader_theme">Bakgrundsfärg</string>
<string name="white_background">Vit</string>
<string name="black_background">Svart</string>
<string name="pref_viewer_type">Standardvisare</string>
<string name="default_viewer">Standard</string>
<string name="left_to_right_viewer">Vänster till höger</string>
<string name="right_to_left_viewer">Höger till vänster</string>
<string name="vertical_viewer">Vertikal</string>
<string name="webtoon_viewer">Webbtoon</string>
<string name="pager_viewer">Sidläsare</string>
<string name="pref_image_decoder">Bildavkodare</string>
<string name="pref_image_scale_type">Skal typ</string>
<string name="scale_type_fit_screen">Passa skärmen</string>
<string name="scale_type_stretch">Sträck ut</string>
<string name="scale_type_fit_width">Passa bredd</string>
<string name="scale_type_fit_height">Passa höjd</string>
<string name="scale_type_original_size">Originalstorlek</string>
<string name="scale_type_smart_fit">Smart passning</string>
<string name="pref_zoom_start">Zoom start position</string>
<string name="zoom_start_automatic">Automatisk</string>
<string name="zoom_start_left">Vänster</string>
<string name="zoom_start_right">Höger</string>
<string name="zoom_start_center">Mitten</string>
<string name="double_tap_anim_speed_0">Ingen animering</string>
<string name="double_tap_anim_speed_normal">Normal</string>
<string name="double_tap_anim_speed_fast">Snabb</string>
<string name="pref_rotation_type">Rotering</string>
<string name="rotation_free">Upplåst</string>
<string name="rotation_lock">Lås</string>
<string name="rotation_force_portrait">Tvinga stående</string>
<string name="rotation_force_landscape">Tvinga liggande</string>
<string name="color_filter_r_value">R</string>
<string name="color_filter_g_value">G</string>
<string name="color_filter_b_value">B</string>
<string name="color_filter_a_value">A</string>
<string name="pref_download_directory">Nedladdningskatalog</string>
<string name="pref_download_only_over_wifi">Ladda bara ner över WiFi</string>
<string name="pref_remove_after_marked_as_read">Ta bort när markerat som läst</string>
<string name="pref_remove_after_read">Ta bort efter läsning</string>
<string name="custom_dir">Anpassad katalog</string>
<string name="disabled">Inaktiverad</string>
<string name="last_read_chapter">Senaste lästa kapitel</string>
<string name="second_to_last">Näst sista kapitel</string>
<string name="third_to_last">Tredje till sista kapitlet</string>
<string name="fourth_to_last">Fjärde till sista kapitlet</string>
<string name="fifth_to_last">Femte till sista kapitlet</string>
<string name="pref_download_new">Ladda ner nya kapitel</string>
<string name="pref_download_new_categories">Kategorier att inkludera i nedladdning</string>
<string name="services">Tjänster</string>
<string name="backup">Backup</string>
<string name="pref_create_backup">Skapa backup</string>
<string name="pref_create_backup_summ">Kan användas för att återställa biblioteket</string>
<string name="pref_restore_backup">Återställ backup</string>
<string name="pref_restore_backup_summ">Återställ bibliotek från backup fil</string>
<string name="pref_backup_directory">Backup katalog</string>
<string name="pref_backup_service_category">Service</string>
<string name="pref_backup_interval">Backup frekvens</string>
<string name="pref_backup_slots">Max automatiska backups</string>
<string name="dialog_restoring_backup">Återställer backup
\n%1$s tillagd i biblioteket</string>
<string name="source_not_found">Källan hittades inte</string>
<string name="dialog_restoring_source_not_found">Återställer backup
\n%1$s källa hittades inte</string>
<string name="backup_created">Backup skapad</string>
<string name="restore_completed">Återställning slutförd</string>
<string name="error_opening_log">Kunde inte öppna loggen</string>
<string name="restore_completed_content">Återställning tog %1$s.
\n%2$s fel hittade.</string>
<string name="backup_restore_content">Återställning använder källa för att hämta data, data kostnader kan tillkomma.
\nSe till att du är inloggad på källor som kräver detta innan du återställer.</string>
<string name="file_saved">Fil sparad vid %1$s</string>
<string name="backup_choice">Vad vill du skapa backup på\?</string>
<string name="restoring_backup">Återställer backup</string>
<string name="creating_backup">Skapar backup</string>
<string name="pref_clear_chapter_cache">Rensa kapitelcache</string>
<string name="used_cache">Används: %1$s</string>
<string name="cache_deleted">Cache rensad. %1$d filer har tagits bort</string>
<string name="cache_delete_error">Ett fel uppstod medan cache rensades</string>
<string name="pref_clear_cookies">Radera cookies</string>
<string name="cookies_cleared">Cookies rensade</string>
<string name="choices_reset">Dialogval återställning</string>
<string name="pref_clear_database">Rensa databas</string>
<string name="pref_clear_database_summary">Radera manga och kapitel som inte finns i ditt bibliotek</string>
<string name="clear_database_confirmation">Är du säker\? Lästa kapitel och framsteg av icke-bibliotek manga kommer att gå förlorade</string>
<string name="clear_database_completed">Inlägg raderade</string>
<string name="pref_refresh_library_metadata">Uppdatera biblioteksmetadata</string>
<string name="pref_refresh_library_metadata_summary">Uppdaterar omslag, genrer, beskrivning och manga status information</string>
<string name="pref_refresh_library_tracking">Uppdatera spårningsmetadata</string>
<string name="pref_refresh_library_tracking_summary">Uppdaterar status, betyg och senaste kapitel läst från spårningstjänsterna</string>
<string name="version">Version</string>
<string name="build_time">Byggtid</string>
<string name="pref_enable_automatic_updates">Sök efter uppdateringar</string>
<string name="pref_enable_automatic_updates_summary">Kontrollera automatiskt om det finns nya programuppdateringar</string>
<string name="pref_enable_acra">Skicka kraschrapporter</string>
<string name="pref_acra_summary">Hjälper till att fixa eventuella buggar. Inga känsliga uppgifter skickas</string>
<string name="login_title">Login för %1$s</string>
<string name="username">Användarnamn</string>
<string name="password">Lösenord</string>
<string name="show_password">Visa lösenord</string>
<string name="login">Logga in</string>
<string name="login_success">Inloggningen lyckades</string>
<string name="invalid_login">Inloggningsfel</string>
<string name="unknown_error">Okänt fel</string>
<string name="library_search_hint">Titel eller författare…</string>
<string name="updating_category">Uppdaterar kategori</string>
<string name="local_source_badge">Lokal</string>
<string name="confirm_delete_manga">Är du säker på att du vill ta bort vald manga\?</string>
<string name="also_delete_chapters">Radera även nedladdade kapitel</string>
<string name="source_search_options">Sök filter</string>
<string name="source_requires_login">Denna källan kräver att du loggar in</string>
<string name="select_source">Välj en källa</string>
<string name="no_valid_sources">Vänligen aktivera minst en giltig källa</string>
<string name="no_more_results">Inga mer resultat</string>
<string name="local_source">Lokal manga</string>
<string name="other_source">Andra</string>
<string name="invalid_combination">Standard inte kan väljas med andra kategorier</string>
<string name="added_to_library">Mangan har lagts till i din bibliotek</string>
<string name="action_global_search_hint">Global sökning…</string>
<string name="no_results">Inga resultat hittades!</string>
<string name="latest">Senaste</string>
<string name="browse">Bläddra</string>
<string name="manga_not_in_db">Denna mangan togs bort från databasen!</string>
<string name="manga_detail_tab">Info</string>
<string name="description">Beskrivning</string>
<string name="ongoing">Pågående</string>
<string name="unknown">Okänd</string>
<string name="licensed">Licensierad</string>
<string name="remove_from_library">Ta bort från biblioteket</string>
<string name="manga_info_full_title_label">Titel</string>
<string name="manga_added_library">Lades till biblioteket</string>
<string name="manga_removed_library">Togs bort från biblioteket</string>
<string name="manga_info_author_label">Författare</string>
<string name="manga_info_artist_label">Artist</string>
<string name="manga_info_chapters_label">Kapitel</string>
<string name="manga_info_last_chapter_label">Sista kapitlet</string>
<string name="manga_info_latest_data_label">Uppdaterad</string>
<string name="manga_info_status_label">Status</string>
<string name="manga_info_source_label">Källa</string>
<string name="manga_info_genres_label">Genrer</string>
<string name="circular_icon">Rund ikon</string>
<string name="rounded_icon">Rundad ikon</string>
<string name="square_icon">Fyrkantig ikon</string>
<string name="star_icon">Stjärn ikon</string>
<string name="shortcut_title">Genvägs titel</string>
<string name="shortcut_created">Genvägen lades till på hemskärmen.</string>
<string name="icon_shape">Ikon form</string>
<string name="icon_creation_fail">Misslyckades med att skapa genväg!</string>
<string name="delete_downloads_for_manga">Ta bort nedladdade kapitel\?</string>
<string name="copied_to_clipboard">%1$s kopierat till urklipp</string>
<string name="source_not_installed">Källa inte installerad: %1$s</string>
<string name="manga_chapters_tab">Kapitel</string>
<string name="manga_chapter_no_title">Ingen titel</string>
<string name="display_mode_chapter">Kapitel %1$s</string>
<string name="chapter_downloaded">Nedladdat</string>
<string name="chapter_queued">Köade</string>
<string name="chapter_downloading">Laddar ner</string>
<string name="chapter_downloading_progress">Laddar ner (%1$d/%2$d)</string>
<string name="chapter_error">Fel</string>
<string name="chapter_paused">Pausad</string>
<string name="fetch_chapters_error">Fel vid hämtning av kapitel</string>
<string name="show_title">Visa titel</string>
<string name="show_chapter_number">Visa kapitelnummer</string>
<string name="sorting_mode">Sorteringsläge</string>
<string name="sort_by_source">Efter källa</string>
<string name="sort_by_number">Efter kapitelnummer</string>
<string name="manga_download">Ladda ner</string>
<string name="custom_download">Ladda ner anpassat belopp</string>
<string name="custom_hint">Belopp</string>
<string name="download_1">Ladda ner nästa kapitel</string>
<string name="download_5">Ladda ner nästa 5 kapitel</string>
<string name="download_10">Ladda ner nästa 10 kapitel</string>
<string name="download_custom">Ladda ner anpassade</string>
<string name="download_all">Ladda ner alla</string>
<string name="download_unread">Ladda ner olästa</string>
<string name="confirm_delete_chapters">Är du säker på att du vill radera valda kapitel\?</string>
<string name="manga_tracking_tab">Spårning</string>
<string name="reading">Läser</string>
<string name="completed">Färdig</string>
<string name="dropped">Slutat läsa</string>
<string name="on_hold">Pausad</string>
<string name="plan_to_read">Planerar att läsa</string>
<string name="repeating">Läser om</string>
<string name="score">Betyg</string>
<string name="title">Titel</string>
<string name="status">Status</string>
<string name="track_status">Status</string>
<string name="track_start_date">Startad</string>
<string name="track_type">Typ</string>
<string name="track_author">Författare</string>
<string name="url_not_set">Manga url är inte inställd, vänligen klicka på titeln och välj manga igen</string>
<string name="error_category_exists">En kategori med detta namn finns redan!</string>
<string name="snack_categories_deleted">Kategorier raderade</string>
<string name="dialog_with_checkbox_remove_description">Detta kommer att ta bort läs datumet för detta kapitel. Är du säker\?</string>
<string name="dialog_with_checkbox_reset">Återställ alla kapitel för denna manga</string>
<string name="snack_add_to_library">Lägg till manga i bibliotek\?</string>
<string name="picture_saved">Bild sparad</string>
<string name="saving_picture">Sparar bild</string>
<string name="options">Alternativ</string>
<string name="custom_filter">Anpassat filter</string>
<string name="set_as_cover">Ställ in som omslag</string>
<string name="cover_updated">Omslag uppdaterad</string>
<string name="page_downloaded">Sidan kopierades till %1$s</string>
<string name="downloading">Laddar ner…</string>
<string name="download_progress">Nedladdat %1$d%%</string>
<string name="chapter_progress">Sida: %1$d</string>
<string name="chapter_subtitle">Kapitel %1$s</string>
<string name="no_next_chapter">Nästa kapitel kunde inte hittas</string>
<string name="no_previous_chapter">Föregående kapitel kunde inte hittas</string>
<string name="decode_image_error">Bilden kunde inte avkodas</string>
<string name="confirm_update_manga_sync">Uppdatera sista kapitlet läst på aktiverade tjänster till %1$d\?</string>
<string name="confirm_set_image_as_cover">Vill du ställa in denna bilden som omslaget\?</string>
<string name="viewer_for_this_series">Visare för denna serie</string>
<string name="transition_finished">Färdig:</string>
<string name="transition_current">Nuvarande:</string>
<string name="transition_next">Nästa:</string>
<string name="transition_previous">Tidigare:</string>
<string name="transition_no_next">Det finns inget mer kapitel</string>
<string name="transition_no_previous">Det finns inget tidigare kapitel</string>
<string name="transition_pages_loading">Laddar sidor…</string>
<string name="transition_pages_error">Misslyckades att ladda sidor: %1$s</string>
<string name="recent_manga_source">%1$s - Kap.%2$s</string>
<string name="migration_info">Tryck för att välja källa att migrera från</string>
<string name="migration_dialog_what_to_include">Välj data som ska inkluderas</string>
<string name="select">Välj</string>
<string name="migrate">Migrera</string>
<string name="copy">Kopiera</string>
<string name="migrating">Migrerar…</string>
<string name="download_queue_error">Ett fel inträffade vid nedladdning av kapitlen. Du kan försöka igen i nedladdningssektionen</string>
<string name="notification_update_progress">Uppdateringsframsteg: %1$d/%2$d</string>
<string name="notification_new_chapters">Nya kapitel hittades</string>
<string name="notification_new_chapters_text">För %1$d titlar</string>
<string name="notification_cover_update_failed">Misslyckades att uppdatera omslag</string>
<string name="notification_first_add_to_library">Vänligen lägg till mangan i ditt bibliotek innan du gör detta</string>
<string name="notification_not_connected_to_ac_title">Synkronisering avbruten</string>
<string name="notification_not_connected_to_ac_body">Inte ansluten till nätström</string>
<string name="notification_no_connection_title">Synkronisering avbruten</string>
<string name="notification_no_connection_body">Anslutningen är inte tillänglig</string>
<string name="file_select_cover">Välj omslagsbild</string>
<string name="file_select_backup">Välj backup fil</string>
<string name="file_select_icon">Välj genvägsikon</string>
<string name="update_check_title">Ny uppdatering tillänglig!</string>
<string name="update_check_confirm">Ladda ner</string>
<string name="update_check_ignore">Ignorera</string>
<string name="update_check_no_new_updates">Inga nya uppdateringar tillgängliga</string>
<string name="update_check_download_started">Nedladdning startades</string>
<string name="update_check_look_for_updates">Söker efter uppdateringar</string>
<string name="update_check_notification_file_download">Ladda ner uppdatering</string>
<string name="update_check_notification_download_in_progress">Nedladdning pågår</string>
<string name="update_check_notification_download_complete">Nedladdning färdig</string>
<string name="update_check_notification_download_error">Nedladdningsfel</string>
<string name="update_check_notification_update_available">Uppdatering tillgänglig</string>
<string name="description_backdrop">Bakgrundsbild av mangan</string>
<string name="description_cover">Omslag av mangan</string>
<string name="information_no_downloads">Inga nedladdningar</string>
<string name="information_no_recent">Inga nya kapitel</string>
<string name="information_no_recent_manga">Ingen nyligen läst manga</string>
<string name="information_empty_library">Biblioteket är tomt, du kan lägga till serier i ditt bibliotek från Kataloger.</string>
<string name="information_empty_category">Du har inga kategorier. Tryck på plus-knappen för att skapa en för att organisera ditt bibliotek.</string>
<string name="download_notifier_downloader_title">Nedladdare</string>
<string name="download_notifier_title_error">Fel</string>
<string name="download_notifier_unkown_error">Ett oväntat fel inträffade vid nedladdning av kapitel</string>
<string name="download_notifier_page_error">En sida saknas i katalogen</string>
<string name="download_notifier_page_ready_error">En sida är inte laddad</string>
<string name="download_notifier_text_only_wifi">Ingen WiFi-anslutning tillgänglig</string>
<string name="download_notifier_no_network">Ingen nätverksanslutning tillgänglig</string>
<string name="download_notifier_download_paused">Nedladdning pausad</string>
<string name="channel_common">Vanlig</string>
<string name="channel_library">Bibliotek</string>
<string name="channel_downloader">Nedladdare</string>
</resources>

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<resources><string name="name">ชื่อ</string>
<string name="categories">หมวดหมู่</string>
<string name="manga">มังงะ</string>
<string name="chapters">บท</string>
<string name="track">ดังต่อไปนี้</string>
<string name="history">ประวัติศาสตร์</string>
<string name="label_settings">ตั้งค่า</string>
<string name="label_download_queue">คิวดาวน์โหลด</string>
<string name="label_library">ห้องสมุดของฉัน</string>
<string name="label_latest_updates">ปรับปรุงล่าสุด</string>
<string name="label_selected">เลือก: %1$d</string>
<string name="label_backup">การสำรองข้อมูล</string>
<string name="label_extensions">ส่วนขยาย</string>
<string name="label_extension_info">ข้อมูลส่วนขยาย</string>
<string name="action_settings">ตั้งค่า</string>
<string name="action_filter">กรอง</string>
</resources>

View File

@ -0,0 +1,59 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="categories">Mga Kategorya</string>
<string name="manga">Mga Manga</string>
<string name="chapters">Mga Kabanata</string>
<string name="track">Sinusubaybayan</string>
<string name="history">Kasaysayan</string>
<string name="label_settings">Mga Setting</string>
<string name="label_download_queue">Queue sa Pag-download</string>
<string name="label_library">Aking Aklatan</string>
<string name="label_recent_manga">Kakabasa Lang</string>
<string name="label_catalogues">Mga Katalogo</string>
<string name="label_recent_updates">Mga Update sa Aklatan</string>
<string name="label_latest_updates">Mga Kakalabas lang na Update</string>
<string name="label_categories">Mga Kategorya</string>
<string name="label_selected">Napili: %1$d</string>
<string name="label_backup">Backup</string>
<string name="label_migration">Pag-migrate ng Source</string>
<string name="label_extensions">Mga Extension</string>
<string name="label_extension_info">Tungkol sa Extension</string>
<string name="action_settings">Mga Setting</string>
<string name="action_filter">Ibukod</string>
<string name="action_filter_downloaded">Na-download</string>
<string name="action_filter_bookmarked">Na-bookmark</string>
<string name="action_filter_unread">Hindi pa Nababasa</string>
<string name="action_filter_read">Nabasa</string>
<string name="action_filter_empty">Tanggalin ang Pagbukod</string>
<string name="action_sort_alpha">Paalpabetiko</string>
<string name="action_sort_total">Kabuuang Bilang ng mga Kabanata</string>
<string name="action_sort_last_read">Huling nabasa</string>
<string name="action_sort_last_updated">Huling na-update</string>
<string name="action_search">Hanapin</string>
<string name="action_global_search">Global na paghahanap</string>
<string name="action_select_all">Piliin lahat</string>
<string name="name">Pangalan</string>
<string name="action_mark_as_read">Markahang Nabasa</string>
<string name="action_mark_as_unread">Markahang Hindi pa Nababasa</string>
<string name="action_mark_previous_as_read">Markahang Nabasa ang Nauna</string>
<string name="action_download">I-download</string>
<string name="action_bookmark">I-bookmark</string>
<string name="action_remove_bookmark">Tanggalin ang bookmark</string>
<string name="action_delete">I-delete</string>
<string name="action_update">I-update</string>
<string name="action_update_library">I-update ang Aklatan</string>
<string name="action_edit">I-edit</string>
<string name="action_add">Idagdag</string>
<string name="action_add_category">Magdagdag ng Kategorya</string>
<string name="action_edit_categories">I-edit ang mga kategorya</string>
<string name="action_rename_category">I-rename ang kategorya</string>
<string name="action_move_category">Ilipat sa mga kategorya</string>
<string name="action_edit_cover">I-edit ang cover picture</string>
<string name="action_sort_up">I-sort pataas</string>
<string name="action_sort_down">I-sort pababa</string>
<string name="action_show_downloaded">Mga Na-download</string>
<string name="action_next_unread">Susunod na Hindi pa Nababasa</string>
<string name="action_start">Simula</string>
<string name="action_stop">Itigil</string>
<string name="action_pause">Ihinto</string>
</resources>

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