mirror of
https://github.com/mihonapp/mihon.git
synced 2025-06-26 19:17:51 +02:00
Compare commits
51 Commits
Author | SHA1 | Date | |
---|---|---|---|
ba674935f4 | |||
a053d55fbc | |||
38ba8852a3 | |||
3533359fae | |||
0a988d1c69 | |||
5f9e65cc9b | |||
026188268d | |||
0e3464457c | |||
56195434e7 | |||
ba2194f435 | |||
e7df172da1 | |||
e7606e6dca | |||
8d4c0f505c | |||
8f2878a841 | |||
77296348a0 | |||
a62a7d5330 | |||
bf60aae9d8 | |||
ecc1520100 | |||
f1f6a2b341 | |||
55bf1c31a6 | |||
e47dd3d587 | |||
af0e3a278f | |||
493ad93957 | |||
dbe8f3cfbe | |||
08cdac968d | |||
f12d5ba689 | |||
0afd77d110 | |||
7551941ef2 | |||
9ca0307e1c | |||
9a6f8be28c | |||
9baf3b5a09 | |||
ca3f0873f3 | |||
adb0201449 | |||
cf293642fb | |||
10e1106760 | |||
3f2d375a53 | |||
f8e121ee06 | |||
0ee005579b | |||
6ecd7fced8 | |||
aeaf4d78f8 | |||
7baf0ddcc2 | |||
d79e141fe5 | |||
030071e659 | |||
9cbf226cfd | |||
36aabf23e1 | |||
8b67255186 | |||
3186661420 | |||
46896d9e86 | |||
2c4fd340c8 | |||
ae6d052978 | |||
974891a085 |
2
.github/ISSUE_TEMPLATE.md
vendored
2
.github/ISSUE_TEMPLATE.md
vendored
@ -4,6 +4,8 @@
|
||||
|
||||
**App version:**
|
||||
|
||||
**Android version:**
|
||||
|
||||
**Issue/Request:**
|
||||
|
||||
**Steps to reproduce (if applicable)**
|
||||
|
@ -1,6 +1,6 @@
|
||||
| Build | Stable | Dev | Contribute | Contact |
|
||||
|-------|----------|---------|------------|---------|
|
||||
| [](https://travis-ci.org/inorichi/tachiyomi) | [)](https://github.com/inorichi/tachiyomi/releases) | [](http://tachiyomi.kanade.eu/latest) [](//github.com/inorichi/tachiyomi/wiki/F-Droid-for-dev-versions) | [](https://hosted.weblate.org/engage/tachiyomi/?utm_source=widget) | [](https://discord.gg/tachiyomi) |
|
||||
| [](https://travis-ci.org/inorichi/tachiyomi) | [)](https://github.com/inorichi/tachiyomi/releases) | [](http://tachiyomi.kanade.eu/latest) | [](https://hosted.weblate.org/engage/tachiyomi/?utm_source=widget) | [](https://discord.gg/tachiyomi) |
|
||||
|
||||
|
||||
# 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
|
||||
|
||||
|
@ -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.4"
|
||||
|
||||
buildConfigField "String", "COMMIT_COUNT", "\"${getCommitCount()}\""
|
||||
buildConfigField "String", "COMMIT_SHA", "\"${getGitSha()}\""
|
||||
@ -48,6 +48,8 @@ android {
|
||||
|
||||
vectorDrawables.useSupportLibrary = true
|
||||
|
||||
multiDexEnabled true
|
||||
|
||||
ndk {
|
||||
abiFilters "armeabi-v7a", "arm64-v8a", "x86"
|
||||
}
|
||||
@ -57,13 +59,6 @@ android {
|
||||
debug {
|
||||
versionNameSuffix "-${getCommitCount()}"
|
||||
applicationIdSuffix ".debug"
|
||||
multiDexEnabled true
|
||||
}
|
||||
release {
|
||||
minifyEnabled true
|
||||
shrinkResources true
|
||||
multiDexEnabled false
|
||||
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
||||
}
|
||||
}
|
||||
|
||||
@ -118,7 +113,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 +156,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'
|
||||
|
@ -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"/>
|
||||
|
@ -42,9 +42,7 @@ open class App : Application() {
|
||||
|
||||
override fun attachBaseContext(base: Context) {
|
||||
super.attachBaseContext(base)
|
||||
if (BuildConfig.DEBUG) {
|
||||
MultiDex.install(this)
|
||||
}
|
||||
MultiDex.install(this)
|
||||
}
|
||||
|
||||
override fun onConfigurationChanged(newConfig: Configuration) {
|
||||
@ -57,13 +55,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")
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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())
|
||||
|
@ -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)
|
||||
}
|
||||
|
@ -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"
|
||||
|
||||
|
@ -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"
|
||||
}
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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")
|
||||
|
@ -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())
|
||||
|
@ -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 }
|
||||
|
||||
|
@ -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)
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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{
|
||||
|
@ -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")
|
||||
}
|
||||
}
|
||||
|
@ -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) {
|
||||
|
@ -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
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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"
|
||||
}
|
||||
}
|
@ -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)
|
||||
}
|
||||
|
@ -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)
|
||||
}
|
||||
}
|
@ -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())
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -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)
|
||||
}
|
||||
}
|
@ -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")
|
||||
}
|
@ -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()
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -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()
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
}
|
||||
}
|
@ -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()
|
||||
|
||||
}
|
@ -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 {
|
||||
|
@ -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)"
|
||||
}
|
||||
|
||||
}
|
@ -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")
|
||||
)
|
||||
}
|
@ -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")
|
||||
)
|
||||
|
||||
}
|
@ -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")
|
||||
)
|
||||
|
||||
}
|
@ -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")
|
||||
)
|
||||
|
||||
}
|
@ -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)
|
||||
)
|
||||
}
|
@ -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")
|
||||
|
||||
}
|
@ -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("ёнкома")
|
||||
)
|
||||
}
|
@ -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")
|
||||
)
|
||||
}
|
@ -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")
|
||||
)
|
||||
}
|
@ -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)
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
*/
|
||||
|
@ -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
|
||||
|
@ -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"
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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 }
|
||||
|
@ -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.
|
||||
*/
|
||||
|
@ -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"
|
||||
}
|
||||
|
||||
}
|
@ -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].
|
||||
*/
|
||||
|
@ -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()
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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())
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -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()
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
@ -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 })
|
||||
|
||||
|
@ -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()
|
||||
}
|
||||
|
@ -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 = {
|
||||
|
@ -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() })
|
||||
|
||||
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
@ -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"
|
||||
|
||||
|
@ -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
|
||||
|
@ -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) {
|
||||
|
@ -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)
|
||||
}
|
||||
|
||||
}
|
@ -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
|
||||
|
@ -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)
|
||||
}
|
||||
|
||||
}
|
@ -46,7 +46,6 @@ class TrackLoginDialog(bundle: Bundle? = null) : LoginDialogPreference(bundle) {
|
||||
login.setText(R.string.unknown_error)
|
||||
error.message?.let { context.toast(it) }
|
||||
})
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
BIN
app/src/main/res/drawable-xxxhdpi/shikomori.png
Normal file
BIN
app/src/main/res/drawable-xxxhdpi/shikomori.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 8.6 KiB |
7
app/src/main/res/layout/manga_info_web_controller.xml
Normal file
7
app/src/main/res/layout/manga_info_web_controller.xml
Normal 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>
|
@ -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 -->
|
||||
|
||||
|
@ -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>
|
||||
|
@ -1,5 +1,36 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<changelog bulletedList="true">
|
||||
<changelogversion versionName="v0.8.4" 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>
|
||||
|
@ -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>
|
@ -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>
|
@ -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>
|
204
app/src/main/res/values-ca/strings.xml
Normal file
204
app/src/main/res/values-ca/strings.xml
Normal 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>
|
437
app/src/main/res/values-cs/strings.xml
Normal file
437
app/src/main/res/values-cs/strings.xml
Normal 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>
|
@ -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>
|
||||
|
476
app/src/main/res/values-el/strings.xml
Normal file
476
app/src/main/res/values-el/strings.xml
Normal 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>
|
@ -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>
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
@ -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>
|
||||
|
@ -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>
|
||||
|
139
app/src/main/res/values-nb-rNO/strings.xml
Normal file
139
app/src/main/res/values-nb-rNO/strings.xml
Normal 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>
|
@ -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>
|
@ -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>
|
@ -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>
|
@ -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>
|
@ -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>
|
||||
|
@ -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>
|
438
app/src/main/res/values-sc/strings.xml
Normal file
438
app/src/main/res/values-sc/strings.xml
Normal 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">B’at àpidu un\'errore in s’iscarrigamentu 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>
|
343
app/src/main/res/values-sr/strings.xml
Normal file
343
app/src/main/res/values-sr/strings.xml
Normal 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>
|
475
app/src/main/res/values-sv/strings.xml
Normal file
475
app/src/main/res/values-sv/strings.xml
Normal 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>
|
18
app/src/main/res/values-th/strings.xml
Normal file
18
app/src/main/res/values-th/strings.xml
Normal 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>
|
59
app/src/main/res/values-tl/strings.xml
Normal file
59
app/src/main/res/values-tl/strings.xml
Normal 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
Reference in New Issue
Block a user