Merge branch 'up_master'

This commit is contained in:
Jay 2020-01-13 00:22:17 -08:00
commit d4ae7d2825
70 changed files with 1551 additions and 634 deletions

13
.gitattributes vendored
View File

@ -4,18 +4,16 @@
# Windows forced line-endings
/.idea/* text eol=crlf
# Gradle wrapper
*.jar binary
# Images
*.webp binary
*.png binary
*.jpg binary
*.jpeg binary
*.gif binary
*.ico binary
*.mov binary
*.mp4 binary
*.mp3 binary
*.flv binary
*.fla binary
*.swf binary
*.gz binary
*.zip binary
*.7z binary
@ -23,7 +21,4 @@
*.eot binary
*.woff binary
*.pyc binary
*.pdf binary
*.ez binary
*.bz2 binary
*.swp binary

View File

@ -52,7 +52,7 @@ class Anilist(private val context: Context, id: Int) : TrackService(id) {
}
}
override fun getLogo() = R.drawable.anilist
override fun getLogo() = R.drawable.tracker_anilist
override fun getLogoColor() = Color.rgb(18, 25, 35)

View File

@ -1,7 +1,7 @@
package eu.kanade.tachiyomi.data.track.bangumi
data class Avatar(
val large: String? = "",
val medium: String? = "",
val small: String? = ""
)
val large: String? = "",
val medium: String? = "",
val small: String? = ""
)

View File

@ -13,132 +13,132 @@ import uy.kohesive.injekt.injectLazy
class Bangumi(private val context: Context, id: Int) : TrackService(id) {
override fun getScoreList(): List<String> {
return IntRange(0, 10).map(Int::toString)
}
override val name = "Bangumi"
override fun displayScore(track: Track): String {
return track.score.toInt().toString()
}
private val gson: Gson by injectLazy()
override fun add(track: Track): Observable<Track> {
return api.addLibManga(track)
}
private val interceptor by lazy { BangumiInterceptor(this, gson) }
override fun update(track: Track): Observable<Track> {
if (track.total_chapters != 0 && track.last_chapter_read == track.total_chapters) {
track.status = COMPLETED
private val api by lazy { BangumiApi(client, interceptor) }
override fun getScoreList(): List<String> {
return IntRange(0, 10).map(Int::toString)
}
return api.updateLibManga(track)
}
override fun bind(track: Track): Observable<Track> {
return api.statusLibManga(track)
.flatMap {
api.findLibManga(track).flatMap { remoteTrack ->
if (remoteTrack != null && it != null) {
track.copyPersonalFrom(remoteTrack)
track.library_id = remoteTrack.library_id
track.status = remoteTrack.status
track.last_chapter_read = remoteTrack.last_chapter_read
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)
update(track)
}
override fun displayScore(track: Track): String {
return track.score.toInt().toString()
}
override fun add(track: Track): Observable<Track> {
return api.addLibManga(track)
}
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)
}
override fun search(query: String): Observable<List<TrackSearch>> {
return api.search(query)
}
override fun bind(track: Track): Observable<Track> {
return api.statusLibManga(track)
.flatMap {
api.findLibManga(track).flatMap { remoteTrack ->
if (remoteTrack != null && it != null) {
track.copyPersonalFrom(remoteTrack)
track.library_id = remoteTrack.library_id
track.status = remoteTrack.status
track.last_chapter_read = remoteTrack.last_chapter_read
refresh(track)
} else {
// Set default fields if it's not found in the list
track.score = DEFAULT_SCORE.toFloat()
track.status = DEFAULT_STATUS
add(track)
update(track)
}
}
}
}
override fun refresh(track: Track): Observable<Track> {
return api.statusLibManga(track)
.flatMap {
track.copyPersonalFrom(it!!)
api.findLibManga(track)
.map { remoteTrack ->
if (remoteTrack != null) {
track.total_chapters = remoteTrack.total_chapters
track.status = remoteTrack.status
override fun search(query: String): Observable<List<TrackSearch>> {
return api.search(query)
}
override fun refresh(track: Track): Observable<Track> {
return api.statusLibManga(track)
.flatMap {
track.copyPersonalFrom(it!!)
api.findLibManga(track)
.map { remoteTrack ->
if (remoteTrack != null) {
track.total_chapters = remoteTrack.total_chapters
track.status = remoteTrack.status
}
track
}
}
}
override fun getLogo() = R.drawable.tracker_bangumi
override fun getLogoColor() = Color.rgb(0xF0, 0x91, 0x99)
override fun getStatusList(): List<Int> {
return listOf(READING, COMPLETED, ON_HOLD, DROPPED, PLANNING)
}
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)
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) {
saveCredentials(oauth.user_id.toString(), oauth.access_token)
}
track
}
}
}
companion object {
const val READING = 3
const val COMPLETED = 2
const val ON_HOLD = 4
const val DROPPED = 5
const val PLANNING = 1
const val DEFAULT_STATUS = READING
const val DEFAULT_SCORE = 0
}
override val name = "Bangumi"
private val gson: Gson by injectLazy()
private val interceptor by lazy { BangumiInterceptor(this, gson) }
private val api by lazy { BangumiApi(client, interceptor) }
override fun getLogo() = R.drawable.bangumi
override fun getLogoColor() = Color.rgb(0xF0, 0x91, 0x99)
override fun getStatusList(): List<Int> {
return listOf(READING, COMPLETED, ON_HOLD, DROPPED, PLANNING)
}
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)
else -> ""
}.doOnError {
logout()
}.toCompletable()
}
}
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) {
saveCredentials(oauth.user_id.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
fun saveToken(oauth: OAuth?) {
val json = gson.toJson(oauth)
preferences.trackToken(this).set(json)
}
}
override fun logout() {
super.logout()
preferences.trackToken(this).set(null)
interceptor.newAuth(null)
}
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)
}
companion object {
const val READING = 3
const val COMPLETED = 2
const val ON_HOLD = 4
const val DROPPED = 5
const val PLANNING = 1
const val DEFAULT_STATUS = READING
const val DEFAULT_SCORE = 0
}
}

View File

@ -21,191 +21,191 @@ import java.net.URLEncoder
class BangumiApi(private val client: OkHttpClient, interceptor: BangumiInterceptor) {
private val gson: Gson by injectLazy()
private val parser = JsonParser()
private val authClient = client.newBuilder().addInterceptor(interceptor).build()
private val gson: Gson by injectLazy()
private val parser = JsonParser()
private val authClient = client.newBuilder().addInterceptor(interceptor).build()
fun addLibManga(track: Track): Observable<Track> {
val body = FormBody.Builder()
.add("rating", track.score.toInt().toString())
.add("status", track.toBangumiStatus())
.build()
val request = Request.Builder()
.url("$apiUrl/collection/${track.media_id}/update")
.post(body)
.build()
return authClient.newCall(request)
.asObservableSuccess()
.map {
track
}
}
fun addLibManga(track: Track): Observable<Track> {
val body = FormBody.Builder()
.add("rating", track.score.toInt().toString())
.add("status", track.toBangumiStatus())
.build()
val request = Request.Builder()
.url("$apiUrl/collection/${track.media_id}/update")
.post(body)
.build()
return authClient.newCall(request)
.asObservableSuccess()
.map {
track
}
}
fun updateLibManga(track: Track): Observable<Track> {
// chapter update
val body = FormBody.Builder()
.add("watched_eps", track.last_chapter_read.toString())
.build()
val request = Request.Builder()
.url("$apiUrl/subject/${track.media_id}/update/watched_eps")
.post(body)
.build()
fun updateLibManga(track: Track): Observable<Track> {
// chapter update
val body = FormBody.Builder()
.add("watched_eps", track.last_chapter_read.toString())
.build()
val request = Request.Builder()
.url("$apiUrl/subject/${track.media_id}/update/watched_eps")
.post(body)
.build()
// read status update
val sbody = FormBody.Builder()
.add("status", track.toBangumiStatus())
.build()
val srequest = Request.Builder()
.url("$apiUrl/collection/${track.media_id}/update")
.post(sbody)
.build()
return authClient.newCall(request)
.asObservableSuccess()
.map {
track
}.flatMap {
authClient.newCall(srequest)
.asObservableSuccess()
.map {
track
}
}
}
// read status update
val sbody = FormBody.Builder()
.add("status", track.toBangumiStatus())
.build()
val srequest = Request.Builder()
.url("$apiUrl/collection/${track.media_id}/update")
.post(sbody)
.build()
return authClient.newCall(srequest)
.asObservableSuccess()
.map {
track
}.flatMap {
authClient.newCall(request)
.asObservableSuccess()
.map {
track
}
}
}
fun search(search: String): Observable<List<TrackSearch>> {
val url = Uri.parse(
"$apiUrl/search/subject/${URLEncoder.encode(search, Charsets.UTF_8.name())}").buildUpon()
.appendQueryParameter("max_results", "20")
.build()
val request = Request.Builder()
.url(url.toString())
.get()
.build()
return authClient.newCall(request)
.asObservableSuccess()
.map { netResponse ->
var responseBody = netResponse.body?.string().orEmpty()
if (responseBody.isEmpty()) {
throw Exception("Null Response")
fun search(search: String): Observable<List<TrackSearch>> {
val url = Uri.parse(
"$apiUrl/search/subject/${URLEncoder.encode(search, Charsets.UTF_8.name())}").buildUpon()
.appendQueryParameter("max_results", "20")
.build()
val request = Request.Builder()
.url(url.toString())
.get()
.build()
return authClient.newCall(request)
.asObservableSuccess()
.map { netResponse ->
var responseBody = netResponse.body?.string().orEmpty()
if (responseBody.isEmpty()) {
throw Exception("Null Response")
}
if (responseBody.contains("\"code\":404")) {
responseBody = "{\"results\":0,\"list\":[]}"
}
val response = parser.parse(responseBody).obj["list"]?.array
response?.filter { it.obj["type"].asInt == 1 }?.map { jsonToSearch(it.obj) }
}
}
private fun jsonToSearch(obj: JsonObject): TrackSearch {
return TrackSearch.create(TrackManager.BANGUMI).apply {
media_id = obj["id"].asInt
title = obj["name_cn"].asString
cover_url = obj["images"].obj["common"].asString
summary = obj["name"].asString
tracking_url = obj["url"].asString
}
if(responseBody.contains("\"code\":404")){
responseBody = "{\"results\":0,\"list\":[]}"
}
private fun jsonToTrack(mangas: JsonObject): Track {
return Track.create(TrackManager.BANGUMI).apply {
title = mangas["name"].asString
media_id = mangas["id"].asInt
score = if (mangas["rating"] != null)
(if (mangas["rating"].isJsonObject) mangas["rating"].obj["score"].asFloat else 0f)
else 0f
status = Bangumi.DEFAULT_STATUS
tracking_url = mangas["url"].asString
}
val response = parser.parse(responseBody).obj["list"]?.array
response?.filter { it.obj["type"].asInt == 1 }?.map { jsonToSearch(it.obj) }
}
}
private fun jsonToSearch(obj: JsonObject): TrackSearch {
return TrackSearch.create(TrackManager.BANGUMI).apply {
media_id = obj["id"].asInt
title = obj["name_cn"].asString
cover_url = obj["images"].obj["common"].asString
summary = obj["name"].asString
tracking_url = obj["url"].asString
}
}
private fun jsonToTrack(mangas: JsonObject): Track {
return Track.create(TrackManager.BANGUMI).apply {
title = mangas["name"].asString
media_id = mangas["id"].asInt
score = if (mangas["rating"] != null)
(if (mangas["rating"].isJsonObject) mangas["rating"].obj["score"].asFloat else 0f)
else 0f
status = Bangumi.DEFAULT_STATUS
tracking_url = mangas["url"].asString
}
}
fun findLibManga(track: Track): Observable<Track?> {
val urlMangas = "$apiUrl/subject/${track.media_id}"
val requestMangas = Request.Builder()
.url(urlMangas)
.get()
.build()
return authClient.newCall(requestMangas)
.asObservableSuccess()
.map { netResponse ->
// get comic info
val responseBody = netResponse.body?.string().orEmpty()
jsonToTrack(parser.parse(responseBody).obj)
}
}
fun statusLibManga(track: Track): Observable<Track?> {
val urlUserRead = "$apiUrl/collection/${track.media_id}"
val requestUserRead = Request.Builder()
.url(urlUserRead)
.cacheControl(CacheControl.FORCE_NETWORK)
.get()
.build()
// todo get user readed chapter here
return authClient.newCall(requestUserRead)
.asObservableSuccess()
.map { netResponse ->
val resp = netResponse.body?.string()
val coll = gson.fromJson(resp, Collection::class.java)
track.status = coll.status?.id!!
track.last_chapter_read = coll.ep_status!!
track
}
}
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 = "bgm10555cda0762e80ca"
private const val clientSecret = "8fff394a8627b4c388cbf349ec865775"
private const val baseUrl = "https://bangumi.org"
private const val apiUrl = "https://api.bgm.tv"
private const val oauthUrl = "https://bgm.tv/oauth/access_token"
private const val loginUrl = "https://bgm.tv/oauth/authorize"
private const val redirectUrl = "tachiyomi://bangumi-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("response_type", "code")
.appendQueryParameter("redirect_uri", redirectUrl)
.build()
fun findLibManga(track: Track): Observable<Track?> {
val urlMangas = "$apiUrl/subject/${track.media_id}"
val requestMangas = Request.Builder()
.url(urlMangas)
.get()
.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)
.add("redirect_uri", redirectUrl)
.build())
}
return authClient.newCall(requestMangas)
.asObservableSuccess()
.map { netResponse ->
// get comic info
val responseBody = netResponse.body?.string().orEmpty()
jsonToTrack(parser.parse(responseBody).obj)
}
}
fun statusLibManga(track: Track): Observable<Track?> {
val urlUserRead = "$apiUrl/collection/${track.media_id}"
val requestUserRead = Request.Builder()
.url(urlUserRead)
.cacheControl(CacheControl.FORCE_NETWORK)
.get()
.build()
// todo get user readed chapter here
return authClient.newCall(requestUserRead)
.asObservableSuccess()
.map { netResponse ->
val resp = netResponse.body?.string()
val coll = gson.fromJson(resp, Collection::class.java)
track.status = coll.status?.id!!
track.last_chapter_read = coll.ep_status!!
track
}
}
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 = "bgm10555cda0762e80ca"
private const val clientSecret = "8fff394a8627b4c388cbf349ec865775"
private const val baseUrl = "https://bangumi.org"
private const val apiUrl = "https://api.bgm.tv"
private const val oauthUrl = "https://bgm.tv/oauth/access_token"
private const val loginUrl = "https://bgm.tv/oauth/authorize"
private const val redirectUrl = "tachiyomi://bangumi-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("response_type", "code")
.appendQueryParameter("redirect_uri", redirectUrl)
.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)
.add("redirect_uri", redirectUrl)
.build())
}
}

View File

@ -7,55 +7,55 @@ import okhttp3.Response
class BangumiInterceptor(val bangumi: Bangumi, val gson: Gson) : Interceptor {
/**
* OAuth object used for authenticated requests.
*/
private var oauth: OAuth? = bangumi.restoreToken()
/**
* OAuth object used for authenticated requests.
*/
private var oauth: OAuth? = bangumi.restoreToken()
fun addTocken(tocken: String, oidFormBody: FormBody): FormBody {
val newFormBody = FormBody.Builder()
for (i in 0 until oidFormBody.size) {
newFormBody.add(oidFormBody.name(i), oidFormBody.value(i))
}
newFormBody.add("access_token", tocken)
return newFormBody.build()
}
override fun intercept(chain: Interceptor.Chain): Response {
val originalRequest = chain.request()
val currAuth = oauth ?: throw Exception("Not authenticated with Bangumi")
if (currAuth.isExpired()) {
val response = chain.proceed(BangumiApi.refreshTokenRequest(currAuth.refresh_token!!))
if (response.isSuccessful) {
newAuth(gson.fromJson(response.body!!.string(), OAuth::class.java))
} else {
response.close()
}
fun addTocken(tocken: String, oidFormBody: FormBody): FormBody {
val newFormBody = FormBody.Builder()
for (i in 0 until oidFormBody.size) {
newFormBody.add(oidFormBody.name(i), oidFormBody.value(i))
}
newFormBody.add("access_token", tocken)
return newFormBody.build()
}
val authRequest = if (originalRequest.method == "GET") originalRequest.newBuilder()
.header("User-Agent", "Tachiyomi")
.url(originalRequest.url.newBuilder()
.addQueryParameter("access_token", currAuth.access_token).build())
.build() else originalRequest.newBuilder()
.post(addTocken(currAuth.access_token, originalRequest.body as FormBody))
.header("User-Agent", "Tachiyomi")
.build()
override fun intercept(chain: Interceptor.Chain): Response {
val originalRequest = chain.request()
return chain.proceed(authRequest)
}
val currAuth = oauth ?: throw Exception("Not authenticated with Bangumi")
fun newAuth(oauth: OAuth?) {
this.oauth = if (oauth == null) null else OAuth(
oauth.access_token,
oauth.token_type,
System.currentTimeMillis() / 1000,
oauth.expires_in,
oauth.refresh_token,
this.oauth?.user_id)
if (currAuth.isExpired()) {
val response = chain.proceed(BangumiApi.refreshTokenRequest(currAuth.refresh_token!!))
if (response.isSuccessful) {
newAuth(gson.fromJson(response.body!!.string(), OAuth::class.java))
} else {
response.close()
}
}
bangumi.saveToken(oauth)
}
val authRequest = if (originalRequest.method == "GET") originalRequest.newBuilder()
.header("User-Agent", "Tachiyomi")
.url(originalRequest.url.newBuilder()
.addQueryParameter("access_token", currAuth.access_token).build())
.build() else originalRequest.newBuilder()
.post(addTocken(currAuth.access_token, originalRequest.body as FormBody))
.header("User-Agent", "Tachiyomi")
.build()
return chain.proceed(authRequest)
}
fun newAuth(oauth: OAuth?) {
this.oauth = if (oauth == null) null else OAuth(
oauth.access_token,
oauth.token_type,
System.currentTimeMillis() / 1000,
oauth.expires_in,
oauth.refresh_token,
this.oauth?.user_id)
bangumi.saveToken(oauth)
}
}

View File

@ -3,20 +3,20 @@ package eu.kanade.tachiyomi.data.track.bangumi
import eu.kanade.tachiyomi.data.database.models.Track
fun Track.toBangumiStatus() = when (status) {
Bangumi.READING -> "do"
Bangumi.COMPLETED -> "collect"
Bangumi.ON_HOLD -> "on_hold"
Bangumi.DROPPED -> "dropped"
Bangumi.PLANNING -> "wish"
else -> throw NotImplementedError("Unknown status")
Bangumi.READING -> "do"
Bangumi.COMPLETED -> "collect"
Bangumi.ON_HOLD -> "on_hold"
Bangumi.DROPPED -> "dropped"
Bangumi.PLANNING -> "wish"
else -> throw NotImplementedError("Unknown status")
}
fun toTrackStatus(status: String) = when (status) {
"do" -> Bangumi.READING
"collect" -> Bangumi.COMPLETED
"on_hold" -> Bangumi.ON_HOLD
"dropped" -> Bangumi.DROPPED
"wish" -> Bangumi.PLANNING
"do" -> Bangumi.READING
"collect" -> Bangumi.COMPLETED
"on_hold" -> Bangumi.ON_HOLD
"dropped" -> Bangumi.DROPPED
"wish" -> Bangumi.PLANNING
else -> throw Exception("Unknown status")
else -> throw Exception("Unknown status")
}

View File

@ -1,13 +1,13 @@
package eu.kanade.tachiyomi.data.track.bangumi
data class Collection(
val `private`: Int? = 0,
val comment: String? = "",
val ep_status: Int? = 0,
val lasttouch: Int? = 0,
val rating: Int? = 0,
val status: Status? = Status(),
val tag: List<String?>? = listOf(),
val user: User? = User(),
val vol_status: Int? = 0
)
val `private`: Int? = 0,
val comment: String? = "",
val ep_status: Int? = 0,
val lasttouch: Int? = 0,
val rating: Int? = 0,
val status: Status? = Status(),
val tag: List<String?>? = listOf(),
val user: User? = User(),
val vol_status: Int? = 0
)

View File

@ -1,16 +1,16 @@
package eu.kanade.tachiyomi.data.track.bangumi
data class OAuth(
val access_token: String,
val token_type: String,
val created_at: Long,
val expires_in: Long,
val refresh_token: String?,
val user_id: Long?
val access_token: String,
val token_type: String,
val created_at: Long,
val expires_in: Long,
val refresh_token: String?,
val user_id: Long?
) {
// Access token refresh before expired
fun isExpired() = (System.currentTimeMillis() / 1000) > (created_at + expires_in - 3600)
// Access token refresh before expired
fun isExpired() = (System.currentTimeMillis() / 1000) > (created_at + expires_in - 3600)
}

View File

@ -1,7 +1,7 @@
package eu.kanade.tachiyomi.data.track.bangumi
data class Status(
val id: Int? = 0,
val name: String? = "",
val type: String? = ""
)
val id: Int? = 0,
val name: String? = "",
val type: String? = ""
)

View File

@ -1,11 +1,11 @@
package eu.kanade.tachiyomi.data.track.bangumi
data class User(
val avatar: Avatar? = Avatar(),
val id: Int? = 0,
val nickname: String? = "",
val sign: String? = "",
val url: String? = "",
val usergroup: Int? = 0,
val username: String? = ""
)
val avatar: Avatar? = Avatar(),
val id: Int? = 0,
val nickname: String? = "",
val sign: String? = "",
val url: String? = "",
val usergroup: Int? = 0,
val username: String? = ""
)

View File

@ -34,7 +34,7 @@ class Kitsu(private val context: Context, id: Int) : TrackService(id) {
private val api by lazy { KitsuApi(client, interceptor) }
override fun getLogo(): Int {
return R.drawable.kitsu
return R.drawable.tracker_kitsu
}
override fun getLogoColor(): Int {

View File

@ -35,7 +35,7 @@ class Myanimelist(private val context: Context, id: Int) : TrackService(id) {
override val name: String
get() = "MyAnimeList"
override fun getLogo() = R.drawable.mal
override fun getLogo() = R.drawable.tracker_mal
override fun getLogoColor() = Color.rgb(46, 81, 162)

View File

@ -2,7 +2,6 @@ package eu.kanade.tachiyomi.data.track.shikimori
import android.content.Context
import android.graphics.Color
import android.util.Log
import com.google.gson.Gson
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.database.models.Track
@ -84,7 +83,7 @@ class Shikimori(private val context: Context, id: Int) : TrackService(id) {
private val api by lazy { ShikimoriApi(client, interceptor) }
override fun getLogo() = R.drawable.shikimori
override fun getLogo() = R.drawable.tracker_shikimori
override fun getLogoColor() = Color.rgb(40, 40, 40)

View File

@ -5,7 +5,7 @@ import eu.kanade.tachiyomi.data.updater.Release
/**
* Release object.
* Contains information about the latest release from Github.
* Contains information about the latest release from GitHub.
*
* @param version version of latest release.
* @param info log of latest release.

View File

@ -10,7 +10,7 @@ import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
/**
* Used to connect with the Github API.
* Used to connect with the GitHub API.
*/
interface GithubService {

View File

@ -71,7 +71,7 @@ class ExtensionManager(
private set(value) {
field = value
availableExtensionsRelay.call(value)
setUpdateFieldOfInstalledExtensions(value)
updatedInstalledExtensionsStatuses(value)
}
/**
@ -158,18 +158,25 @@ class ExtensionManager(
*
* @param availableExtensions The list of extensions given by the [api].
*/
private fun setUpdateFieldOfInstalledExtensions(availableExtensions: List<Extension.Available>) {
private fun updatedInstalledExtensionsStatuses(availableExtensions: List<Extension.Available>) {
val mutInstalledExtensions = installedExtensions.toMutableList()
var changed = false
for ((index, installedExt) in mutInstalledExtensions.withIndex()) {
val pkgName = installedExt.pkgName
val availableExt = availableExtensions.find { it.pkgName == pkgName } ?: continue
val availableExt = availableExtensions.find { it.pkgName == pkgName }
val hasUpdate = availableExt.versionCode > installedExt.versionCode
if (installedExt.hasUpdate != hasUpdate) {
mutInstalledExtensions[index] = installedExt.copy(hasUpdate = hasUpdate)
changed = true
if (availableExt == null) {
if (!installedExt.isObsolete) {
mutInstalledExtensions[index] = installedExt.copy(isObsolete = true)
changed = true
}
} else {
val hasUpdate = availableExt.versionCode > installedExt.versionCode
if (installedExt.hasUpdate != hasUpdate) {
mutInstalledExtensions[index] = installedExt.copy(hasUpdate = hasUpdate)
changed = true
}
}
}
if (changed) {

View File

@ -16,7 +16,8 @@ sealed class Extension {
override val versionCode: Int,
val sources: List<Source>,
override val lang: String,
val hasUpdate: Boolean = false) : Extension()
val hasUpdate: Boolean = false,
val isObsolete: Boolean = false) : Extension()
data class Available(override val name: String,
override val pkgName: String,

View File

@ -1,6 +1,8 @@
package eu.kanade.tachiyomi.source
import android.content.Context
import com.google.gson.Gson
import com.google.gson.JsonObject
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.source.model.Filter
import eu.kanade.tachiyomi.source.model.FilterList
@ -21,6 +23,7 @@ import java.io.File
import java.io.FileInputStream
import java.io.InputStream
import java.util.Locale
import java.util.Scanner
import java.util.concurrent.TimeUnit
import java.util.zip.ZipEntry
import java.util.zip.ZipFile
@ -117,8 +120,6 @@ class LocalSource(private val context: Context) : CatalogueSource {
}
}
}
initialized = true
}
}
return Observable.just(MangasPage(mangas, false))
@ -126,7 +127,26 @@ class LocalSource(private val context: Context) : CatalogueSource {
override fun fetchLatestUpdates(page: Int) = fetchSearchManga(page, "", LATEST_FILTERS)
override fun fetchMangaDetails(manga: SManga) = Observable.just(manga)
override fun fetchMangaDetails(manga: SManga): Observable<SManga> {
getBaseDirectories(context)
.mapNotNull { File(it, manga.url).listFiles()?.toList() }
.flatten()
.filter { it.extension.equals("json") }
.firstOrNull()
?.apply {
val json = Gson().fromJson(Scanner(this).useDelimiter("\\Z").next(), JsonObject::class.java)
manga.title = json["title"]?.asString ?: manga.title
manga.author = json["author"]?.asString ?: manga.author
manga.artist = json["artist"]?.asString ?: manga.artist
manga.description = json["description"]?.asString ?: manga.description
manga.genre = json["genre"]?.asJsonArray
?.map { it.asString }
?.joinToString(", ")
?: manga.genre
manga.status = json["status"]?.asInt ?: manga.status
}
return Observable.just(manga)
}
override fun fetchChapterList(manga: SManga): Observable<List<SChapter>> {
val chapters = getBaseDirectories(context)

View File

@ -89,15 +89,16 @@ abstract class BaseController(bundle: Bundle? = null) : RestoreViewOnCreateContr
* This method should be removed when fixed upstream.
* Issue link: https://issuetracker.google.com/issues/37657375
*/
fun MenuItem.fixExpand() {
fun MenuItem.fixExpand(onExpand: ((MenuItem) -> Boolean)? = null, onCollapse: ((MenuItem) -> Boolean)? = null) {
setOnActionExpandListener(object : MenuItem.OnActionExpandListener {
override fun onMenuItemActionExpand(item: MenuItem): Boolean {
return true
return onExpand?.invoke(item) ?: true
}
override fun onMenuItemActionCollapse(item: MenuItem): Boolean {
activity?.invalidateOptionsMenu()
return true
return onCollapse?.invoke(item) ?: true
}
})
}

View File

@ -53,7 +53,6 @@ import kotlinx.android.synthetic.main.main_activity.*
import rx.Observable
import rx.Subscription
import rx.android.schedulers.AndroidSchedulers
import rx.subscriptions.Subscriptions
import timber.log.Timber
import uy.kohesive.injekt.injectLazy
import java.util.concurrent.TimeUnit
@ -274,6 +273,7 @@ open class BrowseCatalogueController(bundle: Bundle) :
val searchEventsObservable = searchView.queryTextChangeEvents()
.skip(1)
.filter { router.backstack.lastOrNull()?.controller() == this@BrowseCatalogueController }
.share()
val writingObservable = searchEventsObservable
.filter { !it.isSubmitted }
@ -284,11 +284,12 @@ open class BrowseCatalogueController(bundle: Bundle) :
searchViewSubscription?.unsubscribe()
searchViewSubscription = Observable.merge(writingObservable, submitObservable)
.map { it.queryText().toString() }
.distinctUntilChanged()
.subscribeUntilDestroy { searchWithQuery(it) }
untilDestroySubscriptions.add(
Subscriptions.create { if (isActionViewExpanded) collapseActionView() })
fixExpand(onCollapse = {
searchWithQuery("")
true
})
}
// Setup filters button
@ -356,11 +357,6 @@ open class BrowseCatalogueController(bundle: Bundle) :
if (presenter.query == newQuery)
return
// FIXME dirty fix to restore the toolbar buttons after closing search mode.
if (newQuery == "") {
activity?.invalidateOptionsMenu()
}
showProgressBar()
adapter?.clear()

View File

@ -78,6 +78,10 @@ class ExtensionDetailsController(bundle: Bundle? = null) :
presenter.uninstallExtension()
}
if (extension.isObsolete) {
extension_obsolete.visibility = View.VISIBLE
}
val themedContext by lazy { getPreferenceThemeContext() }
val manager = PreferenceManager(themedContext)
manager.preferenceDataStore = EmptyPreferenceDataStore()

View File

@ -0,0 +1,52 @@
package eu.kanade.tachiyomi.ui.extension
import androidx.preference.PreferenceScreen
import androidx.preference.SwitchPreference
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.preference.getOrDefault
import eu.kanade.tachiyomi.extension.ExtensionManager
import eu.kanade.tachiyomi.ui.setting.SettingsController
import eu.kanade.tachiyomi.ui.setting.onChange
import eu.kanade.tachiyomi.ui.setting.titleRes
import eu.kanade.tachiyomi.util.LocaleHelper
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
class ExtensionFilterController: SettingsController() {
override fun setupPreferenceScreen(screen: PreferenceScreen) = with(screen) {
titleRes = R.string.action_filter
val activeLangs = preferences.enabledLanguages().getOrDefault()
val availableLangs =
Injekt.get<ExtensionManager>().availableExtensions.groupBy {
it.lang
}.keys.minus("all").partition {
it in activeLangs
}.let {
it.first + it.second
}
availableLangs.forEach {
SwitchPreference(context).apply {
preferenceScreen.addPreference(this)
title = LocaleHelper.getDisplayName(it, context)
isPersistent = false
isChecked = it in activeLangs
onChange { newValue ->
val checked = newValue as Boolean
val currentActiveLangs = preferences.enabledLanguages().getOrDefault()
if (checked) {
preferences.enabledLanguages().set(currentActiveLangs + it)
} else {
preferences.enabledLanguages().set(currentActiveLangs - it)
}
true
}
}
}
}
}

View File

@ -1,6 +1,8 @@
package eu.kanade.tachiyomi.ui.extension
import android.view.View
import androidx.core.content.ContextCompat
import androidx.vectordrawable.graphics.drawable.VectorDrawableCompat
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.glide.GlideApp
import eu.kanade.tachiyomi.extension.model.Extension
@ -52,11 +54,15 @@ class ExtensionHolder(view: View, override val adapter: ExtensionAdapter) :
bindButton(item)
}
@Suppress("ResourceType")
fun bindButton(item: ExtensionItem) = with(ext_button) {
isEnabled = true
isClickable = true
isActivated = false
background = VectorDrawableCompat.create(resources!!, R.drawable.button_bg_transparent, null)
setTextColor(ContextCompat.getColorStateList(context, R.drawable.button_bg_transparent))
val extension = item.extension
val installStep = item.installStep
@ -73,11 +79,21 @@ class ExtensionHolder(view: View, override val adapter: ExtensionAdapter) :
isClickable = false
}
} else if (extension is Extension.Installed) {
if (extension.hasUpdate) {
isActivated = true
setText(R.string.ext_update)
} else {
setText(R.string.ext_details)
when {
extension.hasUpdate -> {
isActivated = true
setText(R.string.ext_update)
}
extension.isObsolete -> {
// Red outline
background = VectorDrawableCompat.create(resources, R.drawable.button_bg_error, null)
setTextColor(ContextCompat.getColorStateList(context, R.drawable.button_bg_error))
setText(R.string.ext_obsolete)
}
else -> {
setText(R.string.ext_details)
}
}
} else if (extension is Extension.Untrusted) {
setText(R.string.ext_trust)

View File

@ -62,7 +62,7 @@ open class ExtensionPresenter(
val items = mutableListOf<ExtensionItem>()
val installedSorted = installed.sortedWith(compareBy({ !it.hasUpdate }, { it.pkgName }))
val installedSorted = installed.sortedWith(compareBy({ !it.hasUpdate }, { !it.isObsolete }, { it.pkgName }))
val untrustedSorted = untrusted.sortedBy { it.pkgName }
val availableSorted = available
// Filter out already installed extensions and disabled languages

View File

@ -1,13 +1,13 @@
package eu.kanade.tachiyomi.ui.library
import android.content.Context
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import android.util.AttributeSet
import android.view.MotionEvent
import android.view.View
import android.view.ViewGroup
import android.widget.FrameLayout
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import eu.davidea.flexibleadapter.FlexibleAdapter
import eu.davidea.flexibleadapter.SelectableAdapter
import eu.kanade.tachiyomi.R

View File

@ -465,7 +465,6 @@ class ChaptersController() : NucleusController<ChaptersPresenter>(),
}
}
private fun showDeleteChaptersConfirmationDialog() {
DeleteChaptersDialog(this).showDialog(router)
}

View File

@ -117,10 +117,11 @@ class SettingsLibraryController : SettingsController() {
selectedCategories.joinToString { it.name }
}
}
intListPreference{
intListPreference {
key = Keys.libraryUpdatePrioritization
titleRes = R.string.pref_library_update_prioritization
// The following arrays are to be lined up with the list rankingScheme in:
// The following array lines up with the list rankingScheme in:
// ../../data/library/LibraryUpdateRanker.kt
entriesRes = arrayOf(
R.string.action_sort_alpha,
@ -138,14 +139,13 @@ class SettingsLibraryController : SettingsController() {
titleRes = R.string.default_category
val categories = listOf(Category.createDefault()) + dbCategories
val selectedCategory = categories.find { it.id == preferences.defaultCategory() }
entries = arrayOf(context.getString(R.string.default_category_summary)) +
categories.map { it.name }.toTypedArray()
entryValues = arrayOf("-1") + categories.map { it.id.toString() }.toTypedArray()
defaultValue = "-1"
summary = selectedCategory?.name ?: context.getString(R.string.default_category_summary)
val selectedCategory = categories.find { it.id == preferences.defaultCategory() }
summary = selectedCategory?.name ?: context.getString(R.string.default_category_summary)
onChange { newValue ->
summary = categories.find {
it.id == (newValue as String).toInt()

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:interpolator/accelerate_quint"
android:fromYDelta="0"
android:toYDelta="30%p"
android:duration="200" />

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:interpolator/accelerate_cubic"
android:fromYDelta="30%p"
android:toYDelta="0"
android:duration="300" />

View File

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

Before

Width:  |  Height:  |  Size: 826 B

After

Width:  |  Height:  |  Size: 826 B

View File

Before

Width:  |  Height:  |  Size: 8.5 KiB

After

Width:  |  Height:  |  Size: 8.5 KiB

View File

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_activated="true" android:color="@color/md_white_1000">
<shape android:shape="rectangle">
<corners android:radius="2dp" />
<solid android:color="@color/red_error" />
<padding android:left="8dp" android:right="8dp" />
</shape>
</item>
<item android:state_enabled="false" android:color="@color/textColorHintLight">
<shape android:shape="rectangle">
<corners android:radius="2dp" />
<solid android:color="@android:color/transparent" />
<stroke android:width="1dp" android:color="@color/textColorHintLight" />
<padding android:left="8dp" android:right="8dp" />
</shape>
</item>
<item android:color="@color/red_error">
<shape android:color="@color/red_error" android:shape="rectangle">
<corners android:radius="2dp" />
<solid android:color="@android:color/transparent" />
<stroke android:width="1dp" android:color="@color/red_error" />
<padding android:left="8dp" android:right="8dp" />
</shape>
</item>
</selector>

View File

@ -60,6 +60,22 @@
app:layout_constraintEnd_toEndOf="parent"
tools:text="eu.kanade.tachiyomi.extension.en.myext"/>
<TextView
android:id="@+id/extension_obsolete"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:layout_marginBottom="16dp"
android:background="@color/red_error"
android:gravity="center"
android:padding="16dp"
android:text="@string/obsolete_extension_message"
android:textColor="@android:color/white"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/extension_pkg" />
<Button
android:id="@+id/extension_uninstall_button"
android:layout_width="0dp"
@ -71,7 +87,7 @@
style="@style/Theme.Widget.Button.Colored"
app:layout_constraintStart_toStartOf="@id/guideline"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/extension_pkg" />
app:layout_constraintTop_toBottomOf="@id/extension_obsolete" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/extension_prefs_recycler"

View File

@ -1,8 +1,8 @@
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:gravity="center">
<FrameLayout
@ -13,8 +13,7 @@
<FrameLayout
android:id="@+id/viewer_container"
android:layout_width="match_parent"
android:layout_height="match_parent">
</FrameLayout>
android:layout_height="match_parent" />
<ProgressBar
android:id="@+id/please_wait"
@ -22,7 +21,7 @@
android:layout_height="56dp"
android:layout_gravity="center"
android:visibility="gone"
tools:visibility="visible"/>
tools:visibility="visible" />
<eu.kanade.tachiyomi.ui.reader.PageIndicatorTextView
android:id="@+id/page_number"
@ -56,18 +55,19 @@
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:layout_gravity="bottom"
android:gravity="center"
android:background="?colorPrimary"
android:orientation="horizontal"
android:descendantFocusability="blocksDescendants">
android:descendantFocusability="blocksDescendants"
android:gravity="center"
android:orientation="horizontal">
<ImageButton
android:id="@+id/left_chapter"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="@dimen/material_layout_keylines_screen_edge_margin"
android:background="?selectableItemBackgroundBorderless"
app:srcCompat="@drawable/ic_skip_previous_white_24dp"/>
android:contentDescription="@string/action_previous_chapter"
android:padding="@dimen/material_layout_keylines_screen_edge_margin"
app:srcCompat="@drawable/ic_skip_previous_white_24dp" />
<TextView
android:id="@+id/left_page_text"
@ -75,13 +75,18 @@
android:layout_height="match_parent"
android:gravity="center"
android:textSize="15sp"
android:clickable="true"
tools:text="1"/>
tools:text="1" />
<!--
Wonky way of setting height due to issues with horizontally centering the thumb in Android 5.
See https://stackoverflow.com/questions/15701767/android-thumb-is-not-centered-in-seekbar
-->
<eu.kanade.tachiyomi.ui.reader.ReaderSeekBar
android:id="@+id/page_seekbar"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_height="wrap_content"
android:maxHeight="?attr/actionBarSize"
android:minHeight="?attr/actionBarSize"
android:layout_weight="1" />
<TextView
@ -90,16 +95,16 @@
android:layout_height="match_parent"
android:gravity="center"
android:textSize="15sp"
android:clickable="true"
tools:text="15"/>
tools:text="15" />
<ImageButton
android:id="@+id/right_chapter"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="@dimen/material_layout_keylines_screen_edge_margin"
android:background="?selectableItemBackgroundBorderless"
app:srcCompat="@drawable/ic_skip_next_white_24dp"/>
android:contentDescription="@string/action_next_chapter"
android:padding="@dimen/material_layout_keylines_screen_edge_margin"
app:srcCompat="@drawable/ic_skip_next_white_24dp" />
</LinearLayout>
@ -109,12 +114,12 @@
android:id="@+id/brightness_overlay"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone"/>
android:visibility="gone" />
<eu.kanade.tachiyomi.ui.reader.ReaderColorFilterView
android:id="@+id/color_overlay"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone"/>
android:visibility="gone" />
</FrameLayout>

View File

@ -25,7 +25,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
tools:src="@drawable/mal" />
tools:src="@drawable/tracker_mal" />
</FrameLayout>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
<androidx.coordinatorlayout.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/web_view_layout"
android:layout_width="match_parent"
@ -18,13 +18,21 @@
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
android:theme="?attr/actionBarTheme"
app:navigationIcon="@drawable/ic_close_white_24dp"/>
app:navigationIcon="@drawable/ic_close_white_24dp"
app:layout_scrollFlags="scroll|enterAlways|snap" />
</com.google.android.material.appbar.AppBarLayout>
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<WebView
android:id="@+id/webview"
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="match_parent" />
</WebView>
</LinearLayout>
</FrameLayout>
</androidx.core.widget.NestedScrollView>
</androidx.coordinatorlayout.widget.CoordinatorLayout>

View File

@ -3,10 +3,16 @@
<item
android:id="@+id/action_search"
android:title="@string/action_search"
android:icon="@drawable/ic_search_white_24dp"
app:showAsAction="collapseActionView|ifRoom"
app:actionViewClass="androidx.appcompat.widget.SearchView"/>
android:title="@string/action_search"
app:actionViewClass="androidx.appcompat.widget.SearchView"
app:showAsAction="collapseActionView|ifRoom" />
<item
android:id="@+id/action_settings"
android:icon="@drawable/ic_filter_list_white_24dp"
android:title="@string/action_filter"
app:showAsAction="ifRoom" />
<item
android:id="@+id/action_filter"

View File

@ -436,15 +436,19 @@
<string name="transition_no_previous">لا يوجدُ فصل سابق</string>
<string name="transition_pages_loading">جار تحميل الصّفحات…</string>
<string name="transition_pages_error">فشل تحميل الصّفحات: %1$s</string>
<string name="pref_read_with_long_tap">ضغطة طويلة</string>
<string name="action_open_in_web_view">فتح في المتصفح</string>
<string name="pref_read_with_long_tap">معلومات بضغطة مستمرة</string>
<string name="action_open_in_web_view">فتح في web view</string>
<string name="pref_true_color">الوان 32bit</string>
<string name="pref_skip_read_chapters">تخطي الفصول المقروءة</string>
<string name="filter_mode_default">أساسي</string>
<string name="filter_mode_overlay">غطاء</string>
<string name="filter_mode_overlay">غطاءالغطاء</string>
<string name="filter_mode_multiply">مضاعفة</string>
<string name="filter_mode_screen">الشاشة</string>
<string name="label_help">المساعدة</string>
<string name="pref_library_update_prioritization">طلبات تحديث المكتبة</string>
<string name="pref_library_update_prioritization_summary">إختر طريقة (Tachiyomi) لطلب التحديثات</string>
<string name="reader_pull_up_for_more_options">"سحب لمزيد من الخيارات"</string>
<string name="pref_color_filter_mode">فلتر الألوان ”وضع الألوان الممزوجة“</string>
<string name="filter_mode_lighten">مراوغة / تفتيح</string>
<string name="filter_mode_darken">حرق / تغميق</string>
</resources>

View File

@ -443,6 +443,10 @@
<string name="filter_mode_default">ডিফল্ট</string>
<string name="filter_mode_overlay">ওভারলে</string>
<string name="filter_mode_screen">স্ক্রীন</string>
<string name="filter_mode_lighten">ডজ/হালকা</string>
<string name="filter_mode_lighten">এড়িয়ে / হালকা</string>
<string name="filter_mode_darken">বার্ন/অন্ধকার</string>
<string name="filter_mode_multiply">গুণ</string>
<string name="label_help">সাহায্য</string>
<string name="pref_library_update_prioritization">মাঙ্গা লাইব্রেরী আপডেটের প্রক্রিয়া</string>
<string name="pref_library_update_prioritization_summary">যে ক্রমে তাচিয়োমি হালনাগাদ করবে তা নির্বাচন করুন</string>
</resources>

View File

@ -20,7 +20,7 @@
<string name="label_extensions">Extensions</string>
<string name="label_extension_info">Informació de l\'extensió</string>
<string name="action_settings">Configuració</string>
<string name="action_filter">Filtre</string>
<string name="action_filter">Filtra</string>
<string name="action_filter_downloaded">Descarregats</string>
<string name="action_filter_bookmarked">Marcats</string>
<string name="action_filter_unread">No llegits</string>
@ -437,7 +437,7 @@
<string name="channel_downloader">Descarregador</string>
<string name="pref_read_with_long_tap">Finestra de toc llarg</string>
<string name="reader_pull_up_for_more_options">Estireu cap amunt per a altres opcions</string>
<string name="action_open_in_web_view">Visualitza en web</string>
<string name="action_open_in_web_view">Obre en una visualització web</string>
<string name="pref_true_color">Color de 32 bits</string>
<string name="pref_skip_read_chapters">Omet els capítols marcats com a llegits</string>
<string name="pref_color_filter_mode">Mode de mescla del filtre de color</string>
@ -449,5 +449,9 @@
<string name="filter_mode_darken">Crema / Enfosqueix</string>
<string name="label_help">Ajuda</string>
<string name="pref_library_update_prioritization">Ordre d\'actualització de la biblioteca</string>
<string name="pref_library_update_prioritization_summary">Selecciona l\'ordre amb el qual Tachiyomi busca actualitzacions</string>
<string name="pref_library_update_prioritization_summary">Seleccioneu l\'ordre amb què el Tachiyomi comprova si hi ha actualitzacions</string>
<string name="action_forward">Endavant</string>
<string name="action_refresh">Actualitza</string>
<string name="no_results_found">No s\'ha trobat cap resultat</string>
<string name="migration_selection_prompt">Seleccioneu un origen del qual vulgueu migrar</string>
</resources>

View File

@ -13,7 +13,7 @@
<string name="label_latest_updates">Neueste Updates</string>
<string name="label_categories">Kategorien</string>
<string name="label_selected">Ausgewählt: %1$d</string>
<string name="label_backup">Backup</string>
<string name="label_backup">Sicherung</string>
<string name="action_settings">Einstellungen</string>
<string name="action_filter">Filter</string>
<string name="action_filter_downloaded">Heruntergeladen</string>
@ -448,4 +448,8 @@
<string name="system_theme">Systemstandard</string>
<string name="system_darkblue_theme">Systemstandard (Dunkelblau)</string>
<string name="system_amoled_theme">Systemstandard (AMOLED)</string>
<string name="action_forward">Vorwärts</string>
<string name="action_refresh">Aktualisierung</string>
<string name="no_results_found">Keine Ergebnisse gefunden</string>
<string name="migration_selection_prompt">Suche eine Quelle zum migrieren aus</string>
</resources>

View File

@ -103,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">Webtoons</string>
<string name="webtoon_viewer">Webtoon</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>
@ -479,4 +479,8 @@ También asegúrese de haber iniciado sesión en las fuentes que lo requieren an
<string name="system_theme">Predefinido del sistema</string>
<string name="system_darkblue_theme">Predefinido del sistema (Azul oscuro)</string>
<string name="system_amoled_theme">Predefinido del sistema (AMOLED)</string>
<string name="action_forward">Adelantar</string>
<string name="action_refresh">Refrescar</string>
<string name="no_results_found">No se han encontrado resultados</string>
<string name="migration_selection_prompt">Selecciona una fuente para migrar</string>
</resources>

View File

@ -18,7 +18,7 @@
<string name="pref_category_tracking">Seuranta</string>
<string name="manga_tracking_tab">Seuranta</string>
<string name="chapters">Luvut</string>
<string name="label_recent_updates">Kirjasto päivitykset</string>
<string name="label_recent_updates">Kirjastopäivitykset</string>
<string name="label_catalogues">Katalokit</string>
<string name="label_selected">Valittu: %1$d</string>
<string name="action_sort_total">Lukuja yhteensä</string>
@ -56,7 +56,7 @@
<string name="transition_pages_loading">Ladataan sivuja…</string>
<string name="transition_pages_error">Sivujen lataus epäonnistui: %1$s</string>
<string name="reader_pull_up_for_more_options">Vedä ylös saadaksesi lisää asetuksia</string>
<string name="recent_manga_source">"%1$s - Luku %2$s"</string>
<string name="recent_manga_source">%1$s - Luku %2$s</string>
<string name="migration_info">Kosketa valitaksesi lähde josta vaihdetaan</string>
<string name="migration_dialog_what_to_include">Valitse sisällytettävä tieto</string>
<string name="select">Valitse</string>
@ -85,7 +85,7 @@
<string name="update_check_notification_file_download">Lataa päivitys</string>
<string name="update_check_notification_download_in_progress">Lataus kesken</string>
<string name="update_check_notification_download_complete">Lataus valmis</string>
<string name="update_check_notification_download_error">Lataus virhe</string>
<string name="update_check_notification_download_error">Latausvirhe</string>
<string name="update_check_notification_update_available">Päivitys saatavilla</string>
<string name="description_backdrop">Sarjan taustakuva</string>
<string name="description_cover">Sarjan kansikuva</string>
@ -450,4 +450,8 @@
<string name="system_theme">Järjestelmän oletus</string>
<string name="system_darkblue_theme">Järjestelmän oletus (Tumman sininen)</string>
<string name="system_amoled_theme">Järjestelmän oletus (AMOLED)</string>
<string name="action_forward">Seuraava</string>
<string name="action_refresh">Päivitä</string>
<string name="no_results_found">Ei tuloksia</string>
<string name="migration_selection_prompt">Valitse lähde josta vaihdetaan</string>
</resources>

View File

@ -342,7 +342,7 @@
<string name="action_move">Déplacer</string>
<string name="action_export">Exporter</string>
<string name="action_create">Créer</string>
<string name="app_not_available">Raccourcis</string>
<string name="app_not_available">Application indisponible</string>
<string name="update_weekly">Chaque semaine</string>
<string name="update_monthly">Chaque mois</string>
<string name="amoled_theme">Thème AMOLED</string>
@ -352,7 +352,7 @@
<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_open_log">Ouvrir 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>
@ -366,7 +366,7 @@
<string name="notification_new_chapters_text">Pour %1$d 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="short_recent_updates">Mises à jour</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_summ">Peut être utilisé pour restaurer la bibliothèque actuelle</string>
@ -375,7 +375,7 @@
<string name="pref_backup_interval">Fréquence de sauvegarde</string>
<string name="pref_backup_slots">Nombre maximal de sauvegardes automatiques</string>
<string name="dialog_restoring_backup">Restauration de sauvegarde en cours
%1$s ajouté à la bibliothèque</string>
\n%1$s ajouté à la bibliothèque</string>
<string name="dialog_restoring_source_not_found">Restauration de sauvegarde en cours
%1$s source introuvable</string>
<string name="backup_created">Sauvegarde créée</string>
@ -417,10 +417,10 @@ Assurez-vous que vous êtes connecté à des sources qui le demande avant de com
<string name="ext_preferences">Préférences</string>
<string name="ext_available">Disponible</string>
<string name="untrusted_extension">Extension non reconnue</string>
<string name="untrusted_extension_message">Cette extension a été signé avec un certificat non reconnu et n\'a pas été activée.
\n
\nUne extension malveillante peut lire les certificats de connections sauvegardés sur Tachiyomi ou exécuter du code arbitraire.
\n
<string name="untrusted_extension_message">Cette extension a été signé avec un certificat non reconnu et n\'a pas été activée.
\n
\nUne extension malveillante peut lire les identifiants de connexion 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>
@ -474,12 +474,20 @@ Assurez-vous que vous êtes connecté à des sources qui le demande avant de com
<string name="filter_mode_default">Par défaut</string>
<string name="filter_mode_multiply">Multiplier</string>
<string name="filter_mode_screen">Écran</string>
<string name="pref_color_filter_mode">Mode de mélange des filtres de couleur</string>
<string name="filter_mode_overlay">Couche</string>
<string name="pref_color_filter_mode">Mode de filtrage via couleurs mélangées</string>
<string name="filter_mode_overlay">Interface</string>
<string name="label_help">Aide</string>
<string name="pref_library_update_prioritization">Ordre de mise à jour de la librairie</string>
<string name="pref_library_update_prioritization_summary">Sélectionnez l\'ordre auquel Tachiyomi doit vérifier les mises à jour</string>
<string name="system_theme">Par défaut système</string>
<string name="system_darkblue_theme">Par défaut système (Bleu foncé)</string>
<string name="system_amoled_theme">Par défaut système (AMOLED)</string>
<string name="pref_library_update_prioritization">Ordre de mise à jour de la bibliothèque</string>
<string name="pref_library_update_prioritization_summary">Sélectionnez l\'ordre dans lequel Tachiyomi doit vérifier si des mises à jour sont disponibles</string>
<string name="filter_mode_lighten">Densité/Éclaircir</string>
<string name="filter_mode_darken">Brûlé / Assombri</string>
<string name="action_forward">Suivant</string>
<string name="action_refresh">Actualiser</string>
<string name="no_results_found">Aucun résultats trouvés</string>
<string name="migration_selection_prompt">Sélectionner une source depuis laquelle migrer</string>
</resources>

View File

@ -145,7 +145,7 @@
<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="webtoon_viewer">वेबटून</string>
<string name="pref_image_decoder">छवि कूटवाचक</string>
<string name="pref_image_scale_type">मापन प्ररूप</string>
<string name="scale_type_fit_screen">उपयुक्त स्क्रीन</string>
@ -367,7 +367,7 @@
<string name="download_notifier_page_ready_error">एक पृष्ठ लोड नहीं हुआ है</string>
<string name="download_notifier_text_only_wifi">कोई वाई-फ़ाई कनेक्शन उपलब्ध नहीं है</string>
<string name="download_notifier_no_network">कोई नेटवर्क कनेक्शन उपलब्ध नहीं है</string>
<string name="download_notifier_download_paused">डाउनलोड रोक दिया गया</string>
<string name="download_notifier_download_paused">डाउनलोड रोक दिया है</string>
<string name="channel_common">सामान्य</string>
<string name="channel_library">पुस्तकालय</string>
<string name="channel_downloader">डाउनलोडर</string>
@ -448,4 +448,8 @@
<string name="system_theme">डिफ़ॉल्ट प्रणाली</string>
<string name="system_darkblue_theme">डिफ़ॉल्ट प्रणाली (गहरा नीला)</string>
<string name="system_amoled_theme">डिफ़ॉल्ट प्रणाली (अलौकिक)</string>
<string name="action_forward">आगे</string>
<string name="action_refresh">पुनश्चर्या</string>
<string name="no_results_found">कोई परिणाम नहीं मिला</string>
<string name="migration_selection_prompt">से माइग्रेट करने के लिए एक स्रोत का चयन करें</string>
</resources>

View File

@ -100,9 +100,9 @@
<string name="label_selected">%1$d kiválasztva</string>
<string name="action_filter">Szűrők</string>
<string name="action_filter_downloaded">Letöltve</string>
<string name="action_filter_bookmarked">Könyvjelzőzött</string>
<string name="action_filter_bookmarked">Könyvjelzőzve</string>
<string name="action_filter_unread">Olvasatlan</string>
<string name="action_filter_read">Aktuális</string>
<string name="action_filter_read">Olvasott</string>
<string name="action_filter_empty">Szűrők eltávolítása</string>
<string name="action_sort_alpha">Betűrendben</string>
<string name="action_sort_total">Összes fejezet</string>
@ -169,10 +169,22 @@
<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>
<string name="ext_preferences">Preferenciák</string>
<string name="darkblue_theme">Sötétkék</string>
<string name="all_lang">Összes</string>
<string name="system_theme">Rendszer alapértelmezése</string>
<string name="system_darkblue_theme">Rendszer alapértelmezése (Sötétkék)</string>
<string name="system_amoled_theme">Rendszer alapértelmezése (AMOLED)</string>
<string name="label_extension_info">Bővítmény információ</string>
<string name="ext_details">Részletek</string>
<string name="ext_update">Frissítés</string>
<string name="ext_install">Telepítés</string>
<string name="ext_pending">Függőben</string>
<string name="ext_downloading">Letöltés</string>
<string name="ext_installing">Telepítés</string>
<string name="ext_installed">Telepítve</string>
<string name="ext_available">Elérhető</string>
<string name="action_open_in_web_view">Webnézet</string>
<string name="label_help">Segítség</string>
<string name="pref_library_update_prioritization">Könyvtár frissítési sorrend</string>
</resources>

View File

@ -317,7 +317,7 @@
<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 menggunakan gambar ini sebagai sampul\?</string>
<string name="viewer_for_this_series">Pembaca untuk seri ini</string>
<string name="viewer_for_this_series">Jumlah pembaca untuk seri ini</string>
<string name="recent_manga_source">%1$s - Ch.%2$s</string>
<string name="download_queue_error">Terjadi kesalahan saat mengunduh bab. Anda bisa mencoba lagi di halaman sedang diunduh</string>
<string name="notification_update_progress">Proses pembaruan sedang berlangsung: %1$d/%2$d</string>
@ -435,17 +435,21 @@
<string name="pref_skip_read_chapters">Lewati bab yang sudah dibaca</string>
<string name="reader_pull_up_for_more_options">Tarik ke atas untuk opsi lainnya</string>
<string name="pref_read_with_long_tap">Dialog ketuk dan tahan</string>
<string name="pref_color_filter_mode">Mode filter warna campuran</string>
<string name="filter_mode_default">Bawaan</string>
<string name="filter_mode_overlay">Hamparan</string>
<string name="pref_color_filter_mode">Mode saringan warna campur</string>
<string name="filter_mode_default">Standar</string>
<string name="filter_mode_overlay">Lapisan</string>
<string name="filter_mode_multiply">Gandakan</string>
<string name="filter_mode_screen">Layar</string>
<string name="filter_mode_lighten">Terangkan</string>
<string name="filter_mode_darken">Gelapkan</string>
<string name="filter_mode_lighten">Dodge / Cerahkan</string>
<string name="filter_mode_darken">Burn / Gelapkan</string>
<string name="label_help">Bantuan</string>
<string name="pref_library_update_prioritization">Urutan perbarui perpustakaan</string>
<string name="pref_library_update_prioritization_summary">Pilih urutan perpustakaan yang akan Tachiyomi perbarui terlebih dahulu</string>
<string name="system_theme">Bawaan sistem</string>
<string name="system_darkblue_theme">Bawaan sistem (Biru gelap)</string>
<string name="system_amoled_theme">Bawaan sistem (AMOLED)</string>
<string name="action_forward">Teruskan</string>
<string name="action_refresh">Muat ulang</string>
<string name="no_results_found">Hasil tidak ditemukan</string>
<string name="migration_selection_prompt">Pilih sumber untuk migrasi dari</string>
</resources>

View File

@ -483,4 +483,8 @@
<string name="system_theme">Predefinita di sistema</string>
<string name="system_darkblue_theme">Predefinita di sistema (Blu scuro)</string>
<string name="system_amoled_theme">Predefinita di sistema (AMOLED)</string>
<string name="action_forward">Avanti</string>
<string name="action_refresh">Ricarica</string>
<string name="no_results_found">Nessun risultato trovato</string>
<string name="migration_selection_prompt">Seleziona una sorgente da cui migrare</string>
</resources>

View File

@ -1,10 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources><string name="name"></string>
<resources>
<string name="name"></string>
<string name="categories">カテゴリ</string>
<string name="manga">漫画</string>
<string name="chapters"></string>
<string name="history">履歴</string>
<string name="label_settings">設定</string>
<string name="label_download_queue">ダウンロードキュー</string>
<string name="label_library">ライブラリ</string>
@ -15,8 +15,6 @@
<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_filter">フィルター</string>
<string name="action_filter_downloaded">ダウンロードした</string>
@ -212,4 +210,15 @@
<string name="system_theme">システム標準</string>
<string name="system_darkblue_theme">システム標準 (ダークブルー)</string>
<string name="system_amoled_theme">システム標準 (AMOLED)</string>
<string name="action_add">追加</string>
<string name="action_rename_category">カテゴリー名を変更</string>
<string name="action_move_category">カテゴリーに移動</string>
<string name="action_sort_up">昇順に並べ替え</string>
<string name="action_sort_down">降順に並べ替え</string>
<string name="action_show_downloaded">ダウンロード終了</string>
<string name="action_stop">停止</string>
<string name="action_remove">削除</string>
<string name="action_install">インストール</string>
<string name="action_undo">取り消し</string>
<string name="label_help">ヘルプ</string>
</resources>

View File

@ -15,7 +15,7 @@
<string name="label_latest_updates">Perubahan terkini</string>
<string name="label_categories">Kategori</string>
<string name="label_selected">%1$d dipilih</string>
<string name="label_backup">Salinan</string>
<string name="label_backup">Sandaran</string>
<string name="action_settings">Tetapan</string>
<string name="action_filter">Tapis</string>
<string name="action_filter_downloaded">Telah dimuat turun</string>
@ -399,7 +399,7 @@
<string name="ext_empty_preferences">Tiada apa untuk disunting di sambungan ini</string>
<string name="pref_double_tap_anim_speed">Kelajuan animasi ketik dua kali</string>
<string name="pref_true_color">32-bit warna</string>
<string name="pref_skip_read_chapters">Langkau bab-bab yang bertanda dibaca</string>
<string name="pref_skip_read_chapters">Langkau bab yang sudah dibaca</string>
<string name="pref_read_with_long_tap">Menahan ketik buka dialog</string>
<string name="pager_viewer">Halaman muka surat</string>
<string name="double_tap_anim_speed_0">Tiada animasi</string>
@ -450,4 +450,8 @@
<string name="system_theme">Tetapan sistem</string>
<string name="system_darkblue_theme">Tetapan sistem (Biru gelap)</string>
<string name="system_amoled_theme">Tetapan sistem (AMOLED)</string>
<string name="action_forward">Ke Depan</string>
<string name="action_refresh">Segar Semula</string>
<string name="no_results_found">Tiada hasil dijumpai</string>
<string name="migration_selection_prompt">Pilih sumber untuk ditukar</string>
</resources>

View File

@ -349,7 +349,7 @@
<string name="snack_categories_deleted">Kategorier slettet</string>
<string name="dialog_with_checkbox_remove_description">Lesningsdato for dette kapittelet vil bli fjernet. Er du sikker\?</string>
<string name="dialog_with_checkbox_reset">Tilbakestill alle kapittel for denne mangaen</string>
<string name="snack_add_to_library">Legg manga til i bibliotek</string>
<string name="snack_add_to_library">Legg manga til i bibliotek\?</string>
<string name="picture_saved">Bilde lagret</string>
<string name="saving_picture">Lagrer bilde</string>
<string name="options">Valg</string>
@ -392,17 +392,17 @@
<string name="label_help">Hjelp</string>
<string name="action_display_download_badge">Last ned merker</string>
<string name="pref_library_columns">Bibliotekmanga per rad</string>
<string name="untrusted_extension_message">Denne utvidelsen ble signert med et usikkert sertifikat og ble ikke aktivert
<string name="untrusted_extension_message">Denne utvidelsen ble signert med et usikkert sertifikat, og ble dermed ikke aktivert
\n
\nEn skadelig utvidelse kan lese innloggingsdetaljer lagret i Tachiyomi eller kjøre ukjent kode
\nEn skadelig utvidelse kan lese innloggingsdetaljer lagret i Tachiyomi, eller kjøre ukjent kode.
\n
\nVed å godta dette sertifikatet aksepterer du overstående risiko.</string>
\nVed å godta dette sertifikatet aksepterer du overstående risikoer.</string>
<string name="ext_empty_preferences">Det er ingen preferanser å redigere for denne utvidelsen</string>
<string name="pref_double_tap_anim_speed">Animasjonshastighet for Dobbelklikk</string>
<string name="pref_double_tap_anim_speed">Animasjonshastighet ved dobbelklikk</string>
<string name="pager_viewer">Sideleser</string>
<string name="backup_restore_content">Gjenoppretting bruker kilde for å hente data, mobilkostnader kan forekomme
\nHusk å logge inn på kilder som krever dette før gjennoppretting.</string>
<string name="confirm_update_manga_sync">Oppdater siste leste kapittel er skrudd på for %1$d\?</string>
<string name="confirm_update_manga_sync">Oppdater siste leste kapittel i eksterne tjenester for %1$d\?</string>
<string name="confirm_set_image_as_cover">Vil du bruke dette bildet som omslag\?</string>
<string name="viewer_for_this_series">Leser for denne serien</string>
<string name="migration_info">Trykk for å velge kilde å migrere fra</string>
@ -435,12 +435,12 @@
<string name="download_notifier_downloader_title">Nedlaster</string>
<string name="download_notifier_title_error">Feil</string>
<string name="download_notifier_unkown_error">En uventet feil oppstod mens kapittelet ble lastet ned</string>
<string name="download_notifier_page_error">En side mangler i katalogen</string>
<string name="download_notifier_page_error">En side ble ikke funnet</string>
<string name="download_notifier_page_ready_error">En side er ikke lastet</string>
<string name="download_notifier_text_only_wifi">Ingen trådløst tilkobling tilgjengelig</string>
<string name="download_notifier_no_network">Ingen nettverkstilkobling tilgjengelig</string>
<string name="download_notifier_download_paused">Nedlasting pauset</string>
<string name="pref_color_filter_mode">Fargefilter-blandingsmodus</string>
<string name="pref_color_filter_mode">Blandingsmodus for fargefilter</string>
<string name="filter_mode_overlay">Overlegg</string>
<string name="filter_mode_multiply">Multiplisere</string>
<string name="filter_mode_lighten">Unngå / lysne</string>
@ -450,4 +450,8 @@
<string name="system_theme">Systemforvalg</string>
<string name="system_darkblue_theme">Systemforvalg (Mørkeblå)</string>
<string name="system_amoled_theme">Systemforvalg (AMOLED)</string>
<string name="action_forward">Frem</string>
<string name="action_refresh">Gjenoppfrisk</string>
<string name="no_results_found">Resultatløst</string>
<string name="migration_selection_prompt">Velg en kilde å migrere fra</string>
</resources>

View File

@ -438,4 +438,15 @@ Zorg ook dat je ingelogd bent voor bronnen die dit vereisen alvorens je het teru
<string name="system_theme">Systeemstandaard</string>
<string name="system_darkblue_theme">Systeemstandaard (Tumman sininen)</string>
<string name="system_amoled_theme">Systeemstandaard (AMOLED)</string>
<string name="action_open_in_web_view">Openen in webview</string>
<string name="pref_true_color">32-bit kleuren</string>
<string name="pref_skip_read_chapters">Hoofdstukken die gemarkeerd zijn als gelezen overslaan</string>
<string name="filter_mode_overlay">Overlapping</string>
<string name="filter_mode_multiply">Vermenigvuldigen</string>
<string name="filter_mode_screen"></string>
<string name="label_help">Help</string>
<string name="pref_library_update_prioritization">Updatevolgorde bibliotheken</string>
<string name="pref_library_update_prioritization_summary">Selecteer de volgorde waarop Tachiyomi zoekt naar updates</string>
<string name="action_forward">Volgende</string>
<string name="action_refresh">Herladen</string>
</resources>

View File

@ -449,4 +449,6 @@ Nie znaleziono źródła %1$s</string>
<string name="system_theme">Systemowy</string>
<string name="system_darkblue_theme">Systemowy (Ciemny niebieski)</string>
<string name="system_amoled_theme">Systemowy (AMOLED)</string>
<string name="action_forward">Dalej</string>
<string name="action_refresh">Odśwież</string>
</resources>

View File

@ -15,7 +15,7 @@
<string name="label_latest_updates">Actualizări recente</string>
<string name="label_categories">Categorii</string>
<string name="label_selected">Selectate: %1$d</string>
<string name="label_backup">Backup</string>
<string name="label_backup">Copie de rezervă</string>
<string name="label_migration">Migrare între surse</string>
<string name="label_extensions">Extensii</string>
<string name="label_extension_info">Info extensie</string>
@ -27,7 +27,7 @@
<string name="action_filter_read">Citite</string>
<string name="action_filter_empty">Șterge filtre</string>
<string name="action_sort_alpha">Alfabetic</string>
<string name="action_sort_total">Total capitole</string>
<string name="action_sort_total">Capitole totale</string>
<string name="action_sort_last_read">Citite recent</string>
<string name="action_sort_last_updated">Actualizate recent</string>
<string name="action_search">Caută</string>
@ -122,7 +122,7 @@
<string name="pref_start_screen">Ecran principal</string>
<string name="pref_language">Limbă</string>
<string name="system_default">Prestabilită de sistem</string>
<string name="default_category">Categoria principală</string>
<string name="default_category">Categorie implicită</string>
<string name="default_category_summary">Întreabă mereu</string>
<string name="all_lang">Toate</string>
<string name="ext_details">Detalii</string>
@ -172,7 +172,7 @@
<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="webtoon_viewer">Benzi desenate web</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>
@ -181,7 +181,7 @@
<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="scale_type_smart_fit">Potrivire inteligentă</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>
@ -229,7 +229,7 @@
\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="error_opening_log">Nu s-a putut deschide jurnalul</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>
@ -244,7 +244,7 @@
<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">Curățați baza 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>
@ -256,7 +256,7 @@
<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_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>
@ -264,10 +264,10 @@
<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="invalid_login">Eroare de conectare</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="updating_category">Actualizând 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>
@ -301,13 +301,13 @@
<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="circular_icon">Pictogramă circulară</string>
<string name="rounded_icon">Pictogramă rotunjită</string>
<string name="square_icon">Pictogramă pătrată</string>
<string name="star_icon">Pictograma stelei</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_shape">Forma pictogramei</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>
@ -320,7 +320,7 @@
<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="chapter_paused">Întrerupt</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>
@ -343,7 +343,7 @@
<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="repeating">Recitind</string>
<string name="score">Scor</string>
<string name="title">Titlu</string>
<string name="status">Status</string>
@ -364,7 +364,7 @@
<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="downloading">Descărcând</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>
@ -401,11 +401,11 @@
<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="file_select_icon">Selectează pictogramă scurtătură</string>
<string name="update_check_title">Nouă actualizare disponibilă!</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_no_new_updates">Nu sunt disponibile actualizări noi</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>
@ -415,8 +415,8 @@
<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_downloads">Fără descărcări</string>
<string name="information_no_recent">Nu există capitole recente</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>
@ -447,4 +447,6 @@
<string name="system_theme">Prestabilită de sistem</string>
<string name="system_darkblue_theme">Prestabilită de sistem (Albastru închis)</string>
<string name="system_amoled_theme">Prestabilită de sistem (AMOLED)</string>
<string name="pref_library_update_prioritization">Ordinea actualizării bibliotecii</string>
<string name="pref_library_update_prioritization_summary">Selectați ordinea în care Tachiyomi verifică actualizarea</string>
</resources>

View File

@ -183,7 +183,7 @@
<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="pref_zoom_start">Positzione incumintzu 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>
@ -447,7 +447,8 @@
<string name="label_help">Agiudu</string>
<string name="pref_library_update_prioritization">Òrdine de agiornamentu de sa biblioteca</string>
<string name="pref_library_update_prioritization_summary">Ischerta s\'òrdine chi Tachiyomi at a impreare pro sos agiornamentos</string>
<string name="system_theme">Predefinida de su sistema</string>
<string name="system_darkblue_theme">Predefinida de su sistema (Biaitu iscuru)</string>
<string name="system_amoled_theme">Predefinida de su sistema (AMOLED)</string>
<string name="action_forward">Sighi</string>
<string name="action_refresh">Annoa</string>
<string name="no_results_found">Perunu resultadu agadadu</string>
<string name="migration_selection_prompt">Ischerta una mitza dae sa cale tramudare</string>
</resources>

View File

@ -0,0 +1,251 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="name">Meno</string>
<string name="categories">Kategórie</string>
<string name="manga">Manga</string>
<string name="chapters">Kapitoly</string>
<string name="track">Sledovanie</string>
<string name="history">História</string>
<string name="label_settings">Nastavenia</string>
<string name="label_download_queue">Sťahujúce sa</string>
<string name="label_library">Knižnica</string>
<string name="label_recent_manga">Nedávno čítané</string>
<string name="label_catalogues">Katalógy</string>
<string name="label_recent_updates">Updaty</string>
<string name="label_latest_updates">Nedávno aktualizované</string>
<string name="label_categories">Kategórie</string>
<string name="label_selected">Vybraté: %1$d</string>
<string name="label_backup">Záloha</string>
<string name="label_migration">Presun zdrojov</string>
<string name="label_extensions">Rozšírenia</string>
<string name="label_extension_info">Info o rozšíreniach</string>
<string name="label_help">Pomoc</string>
<string name="action_settings">Nastavenia</string>
<string name="action_filter">Filter</string>
<string name="action_filter_downloaded">Stiahnuté</string>
<string name="action_filter_bookmarked">Uložené</string>
<string name="action_filter_unread">Neprečítané</string>
<string name="action_filter_read">Prečítané</string>
<string name="action_filter_empty">Zrušiť filter</string>
<string name="action_sort_alpha">Abecedne</string>
<string name="action_sort_total">Všetky kapitoly</string>
<string name="action_sort_last_read">Naposledy čítané</string>
<string name="action_sort_last_updated">Naposledy aktualizované</string>
<string name="action_search">Hľadať</string>
<string name="action_global_search">Hľadať všade</string>
<string name="action_select_all">Vybrať všetko</string>
<string name="action_mark_as_read">Označiť ako prečítané</string>
<string name="action_mark_as_unread">Označiť ako neprečítané</string>
<string name="action_mark_previous_as_read">Označiť predošlé ako prečítané</string>
<string name="action_download">Stiahnuť</string>
<string name="action_bookmark">Uložiť</string>
<string name="action_remove_bookmark">Odstrániť z uložených</string>
<string name="action_delete">Vymazať</string>
<string name="action_update">Aktualizovať</string>
<string name="action_update_library">Aktualizovať knižnicu</string>
<string name="action_edit">Upraviť</string>
<string name="action_add">Pridať</string>
<string name="action_add_category">Pridať kategóriu</string>
<string name="action_edit_categories">Upraviť kategórie</string>
<string name="action_rename_category">Premenovať kategóriu</string>
<string name="action_move_category">Presunúť do kategórie</string>
<string name="action_edit_cover">Nahrať vlastný obal</string>
<string name="action_sort_up">Zatriediť hore</string>
<string name="action_sort_down">Zatriediť dole</string>
<string name="action_show_downloaded">Stiahnuté</string>
<string name="action_next_unread">Nasledujúce nečítané</string>
<string name="action_start">Začať</string>
<string name="action_stop">Zastaviť</string>
<string name="action_pause">Pauza</string>
<string name="action_clear">Zmazať</string>
<string name="action_close">Zatvoriť</string>
<string name="action_previous_chapter">Predošlá kapitola</string>
<string name="action_next_chapter">Nasledujúca kapitola</string>
<string name="action_retry">Skúsiť znovu</string>
<string name="action_remove">Odstrániť</string>
<string name="action_resume">Pokračovať</string>
<string name="action_move">Presunúť</string>
<string name="action_open_in_browser">Otvoriť v browseri</string>
<string name="action_open_in_web_view">Otvoriť vo web view</string>
<string name="action_add_to_home_screen">Pridať na plochu</string>
<string name="action_display_mode">Zmeniť zobrazenie</string>
<string name="action_display">Zobraziť</string>
<string name="action_display_grid">Mriežka</string>
<string name="action_display_list">List</string>
<string name="action_display_download_badge">Symbol stiahnutia</string>
<string name="action_set_filter">Nastaviť filter</string>
<string name="action_cancel">Zrušiť</string>
<string name="action_sort">Triediť</string>
<string name="action_install">Nainštalovať</string>
<string name="action_share">Zdieľať</string>
<string name="action_save">Uložiť</string>
<string name="action_reset">Reset</string>
<string name="action_undo">Krok späť</string>
<string name="action_export">Exportovať</string>
<string name="action_open_log">Otvoriť log</string>
<string name="action_create">Vytvoriť</string>
<string name="action_restore">Obnoviť</string>
<string name="action_open">Otvoriť</string>
<string name="action_login">Prihlásiť sa</string>
<string name="deleting">Maže sa…</string>
<string name="loading">Načítava sa…</string>
<string name="app_not_available">Aplikácia nedostupná</string>
<string name="short_recent_updates">Updaty</string>
<string name="pref_category_general">Všeobecné</string>
<string name="pref_category_reader">Prehliadač</string>
<string name="pref_category_downloads">Sťahovanie</string>
<string name="pref_category_sources">Zdroje</string>
<string name="pref_category_tracking">Sledovanie</string>
<string name="pref_category_advanced">Rozšírené</string>
<string name="pref_category_about">O Aplikácii</string>
<string name="pref_library_columns">Knižnica: Manga na riadok</string>
<string name="portrait">Na výšku</string>
<string name="landscape">Na šírku</string>
<string name="default_columns">Predvolené</string>
<string name="pref_library_update_interval">Frekvencia aktualizácie knižnice</string>
<string name="update_never">Manuálne</string>
<string name="update_1hour">Raz za 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 hodín</string>
<string name="update_12hour">Každých 12 hodín</string>
<string name="update_24hour">Raz za deň</string>
<string name="update_48hour">Každé 2 dni</string>
<string name="update_weekly">Každý týždeň</string>
<string name="update_monthly">Každý mesiac</string>
<string name="pref_library_update_categories">Kategórie, ktoré sa majú zahrnúť do globálnej aktualizácie</string>
<string name="all">Všetko</string>
<string name="pref_library_update_prioritization">Poradie aktualizácie knižnice</string>
<string name="pref_library_update_prioritization_summary">Vyberte poradie, v ktorom Tachiyomi kontroluje aktualizácie</string>
<string name="pref_library_update_restriction">Obmedzenia aktualizácii knižnice</string>
<string name="pref_library_update_restriction_summary">Aktualizovať len vtedy, keď sú splnené podmienky</string>
<string name="wifi">Wi-Fi</string>
<string name="charging">Nabíjanie</string>
<string name="pref_update_only_non_completed">Aktualizovať iba nedokončenú Mangu</string>
<string name="pref_auto_update_manga_sync">Synchronizovať kapitoly po prečítaní</string>
<string name="pref_theme">Motív aplikácie</string>
<string name="light_theme">Hlavná téma</string>
<string name="dark_theme">Tmavý motív</string>
<string name="amoled_theme">AMOLED téma</string>
<string name="darkblue_theme">Tmavomodrá téma</string>
<string name="pref_start_screen">Úvodná obrazovka</string>
<string name="pref_language">Jazyk</string>
<string name="system_default">Predvolené nastavenie systému</string>
<string name="default_category">Predvolená kategória</string>
<string name="default_category_summary">Vždy sa opýtať</string>
<string name="all_lang">Všetky</string>
<string name="ext_details">Podrobnosti</string>
<string name="ext_update">aktualizovať</string>
<string name="ext_install">Nainštalovať</string>
<string name="ext_pending">Čakajúce</string>
<string name="ext_downloading">Sťahujem</string>
<string name="ext_installing">Inštalujem</string>
<string name="ext_installed">Nainštalovaný</string>
<string name="ext_trust">Dôverovať</string>
<string name="ext_untrusted">Odobrať dôveru</string>
<string name="ext_uninstall">Odinštalovať</string>
<string name="ext_preferences">Preferencie</string>
<string name="ext_available">K dispozícii</string>
<string name="untrusted_extension">Nedôveryhodné rozšírenie</string>
<string name="untrusted_extension_message">Toto rozšírenie bolo podpísané nedôveryhodným certifikátom a nebolo aktivované.
\n
\nŠkodlivé rozšírenie môže čítať všetky prihlasovacie údaje uložené v Tachiyomi alebo spúšťať ľubovoľný kód.
\n
\nDôverovaním tohto certifikátu akceptujete tieto riziká.</string>
<string name="ext_version_info">Verzia: %1$s</string>
<string name="ext_language_info">Jazyk: %1$s</string>
<string name="ext_empty_preferences">Nie sú k dispozícii žiadne preferencie na úpravu pre toto rozšírenie</string>
<string name="pref_fullscreen">Na celú obrazovku</string>
<string name="action_forward">Dopredu</string>
<string name="action_refresh">Obnoviť</string>
<string name="pref_lock_orientation">Zamknúť orientáciu</string>
<string name="pref_page_transitions">Prechod stránok</string>
<string name="pref_double_tap_anim_speed">Rýchlosť animácie pre dvojité ťuknutie</string>
<string name="pref_show_page_number">Zobraziť číslo strany</string>
<string name="pref_true_color">32-bitová farba</string>
<string name="pref_crop_borders">Orezať okraje</string>
<string name="pref_custom_brightness">Použiť vlastný jas</string>
<string name="pref_custom_color_filter">Použiť vlastný farebný filter</string>
<string name="pref_color_filter_mode">Farebný filter: režim splynutia</string>
<string name="filter_mode_default">Predvolený</string>
<string name="filter_mode_overlay">Prekrytie</string>
<string name="filter_mode_multiply">Znásobiť</string>
<string name="filter_mode_screen">Obrazovka</string>
<string name="filter_mode_lighten">Dodge / Zosvetliť</string>
<string name="filter_mode_darken">Spáliť / Stmaviť</string>
<string name="pref_keep_screen_on">Nechať obrazovku zapnutú</string>
<string name="pref_skip_read_chapters">Preskočiť kapitoly označené ako prečítané</string>
<string name="pref_reader_navigation">Navigácia</string>
<string name="pref_read_with_volume_keys">Tlačidlá hlasitosti</string>
<string name="pref_read_with_volume_keys_inverted">Invertovať tlačidlá hlasitosti</string>
<string name="pref_read_with_tapping">Ťukanie</string>
<string name="pref_read_with_long_tap">Rozšírene možnosti po dlhšiom podržaní</string>
<string name="pref_reader_theme">Farba pozadia</string>
<string name="white_background">Biela</string>
<string name="black_background">Čierna</string>
<string name="pref_viewer_type">Predvolený prehliadač</string>
<string name="default_viewer">Predvolené</string>
<string name="left_to_right_viewer">Zľava doprava</string>
<string name="right_to_left_viewer">Sprava doľava</string>
<string name="vertical_viewer">Vertikálne</string>
<string name="webtoon_viewer">Ako Webtoon - Zhora dole a strany sa spájajú do jednej dlhej</string>
<string name="pager_viewer">pager</string>
<string name="pref_image_decoder">Dekodér obrázkov</string>
<string name="pref_image_scale_type">Mód škálovania</string>
<string name="scale_type_fit_screen">Prispôsobiť obrazovke</string>
<string name="scale_type_stretch">natiahnuť</string>
<string name="scale_type_fit_width">Prispôsobiť šírke</string>
<string name="scale_type_fit_height">Prispôsobiť výške</string>
<string name="scale_type_original_size">Pôvodná veľkosť</string>
<string name="scale_type_smart_fit">Inteligentne prispôsobiť</string>
<string name="pref_zoom_start">Začiatočná poloha priblíženia</string>
<string name="zoom_start_automatic">Automatická</string>
<string name="zoom_start_left">Vľavo</string>
<string name="zoom_start_right">Vpravo</string>
<string name="zoom_start_center">Stred</string>
<string name="double_tap_anim_speed_0">Žiadna animácia</string>
<string name="double_tap_anim_speed_normal">Normálne</string>
<string name="double_tap_anim_speed_fast">Rýchlo</string>
<string name="pref_rotation_type">Rotácia</string>
<string name="rotation_free">Voľná</string>
<string name="rotation_lock">Zamknúť</string>
<string name="rotation_force_portrait">Iba na výšku</string>
<string name="rotation_force_landscape">Iba na šírku</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">Kam stahovať</string>
<string name="pref_download_only_over_wifi">Sťahovať, iba pri pripojení na Wi-Fi</string>
<string name="pref_remove_after_marked_as_read">Odstrániť keď označené ako prečítané</string>
<string name="pref_remove_after_read">Odstrániť po prečítaní</string>
<string name="custom_dir">Vlastný adresár</string>
<string name="disabled">Vypnuté</string>
<string name="last_read_chapter">Naposledy čítaná kapitola</string>
<string name="second_to_last">Predposledná kapitola</string>
<string name="third_to_last">Predpred posledná kapitola</string>
<string name="fourth_to_last">Štvrtá kapitola od konca</string>
<string name="fifth_to_last">Piata kapitola od konca</string>
<string name="pref_download_new">Stiahnuť nové kapitoly</string>
<string name="pref_download_new_categories">Kategórie, ktoré sa majú zahrnúť do sťahovania</string>
<string name="services">Služby</string>
<string name="backup">Zálohovanie</string>
<string name="pref_create_backup">Vytvoriť zálohu</string>
<string name="pref_create_backup_summ">Možno použiť na obnovenie aktuálnej knižnice</string>
<string name="pref_restore_backup">Obnoviť zálohu</string>
<string name="pref_restore_backup_summ">Obnoviť knižnicu zo záložného súboru</string>
<string name="pref_backup_directory">Adresár na zálohy</string>
<string name="pref_backup_service_category">Služby</string>
<string name="pref_backup_interval">Frekvencia zálohovania</string>
<string name="pref_backup_slots">Max. počet automatických záloh</string>
<string name="dialog_restoring_backup">Obnovujem zálohu
\n%1$s pridaná do knižnice</string>
<string name="source_not_found">Zdroj sa nenašiel</string>
<string name="dialog_restoring_source_not_found">Obnovujem zálohu
\n%1$s zdroj sa nenašiel</string>
<string name="backup_created">Záloha bola vytvorená</string>
<string name="restore_completed">Obnovenie dokončené</string>
<string name="error_opening_log">Log sa nedá otvoriť</string>
<string name="restore_completed_content">Obnova trvala %1$s.
\n%2$s nájdených chýb.</string>
</resources>

View File

@ -58,7 +58,7 @@
<string name="action_open">เปิด</string>
<string name="action_login">เข้าสู่ระบบ</string>
<string name="deleting">กำลังลบ…</string>
<string name="loading">กำลังโหลด…</string>
<string name="loading">กำลังดำเนินการ</string>
<string name="short_recent_updates">อัพเดท</string>
<string name="pref_category_general">ทั่วไป</string>
<string name="pref_category_reader">ตัวอ่าน</string>
@ -94,4 +94,362 @@
<string name="white_background">ขาว</string>
<string name="black_background">ดำ</string>
<string name="system_theme">ค่าเริ่มต้นของระบบ</string>
<string name="label_recent_manga">อ่านล่าสุด</string>
<string name="action_global_search">ค้นหา</string>
<string name="action_mark_previous_as_read">อ่านแล้ว</string>
<string name="label_help">ช่วยเหลือ</string>
<string name="label_migration">เปลี่ยนแหล่งข้อมูล</string>
<string name="action_filter_bookmarked">บุ๊คมาร์ค</string>
<string name="action_bookmark">บุ๊คมาร์ค</string>
<string name="action_remove_bookmark">ลบบุ๊คมาร์ค</string>
<string name="action_move_category">ย้ายไปที่ประเภท</string>
<string name="action_sort_up">เรียงขึ้น</string>
<string name="action_sort_down">เรียงลง</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_remove">ลบออก</string>
<string name="action_resume">เล่นต่อ</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_set_filter">ตั้งตัวกรอง</string>
<string name="action_sort">การจัดเรียง</string>
<string name="action_share">แชร์</string>
<string name="action_undo">ย้อนกลับ</string>
<string name="action_export">นำออก</string>
<string name="action_open_log">ประวัติ</string>
<string name="action_restore">ย้อนค่ากลับ</string>
<string name="app_not_available">โปรแกรมไม่พร้อม</string>
<string name="pref_category_downloads">ที่ดาวน์โหลด</string>
<string name="pref_category_tracking">การติดตาม</string>
<string name="pref_library_columns">จำนวนการ์ตูนแต่ละแถวแนวนอน</string>
<string name="portrait">แนวตั้ง</string>
<string name="landscape">แนวนอน</string>
<string name="pref_library_update_interval">ความถี่การปรับปรุงข้อมูลห้องสมุด</string>
<string name="update_never">คู่มือ</string>
<string name="pref_library_update_categories">หมวดหมู่ที่จะปรับปรุงข้อมูลทั้งหมด</string>
<string name="pref_library_update_restriction">จำกัดการปรับปรุงห้องสมุด</string>
<string name="pref_library_update_restriction_summary">ปรับปรุงตามเงื่อนไข</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="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="default_category">ค่าเรื่มต้นประเภท</string>
<string name="all_lang">ทั้งหมด</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_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_read_with_volume_keys">ปุ่มปรับระดับเสียง</string>
<string name="pref_read_with_volume_keys_inverted">สลับด้าน ปุ่มปรับระดับเสียง</string>
<string name="pref_read_with_tapping">แตะ</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="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">กรัม</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">2 บท ถึง บทสุดท้าย</string>
<string name="third_to_last">3 บท ถึง บทสุดท้าย</string>
<string name="fourth_to_last">4 บท ถึง บทสุดท้าย</string>
<string name="fifth_to_last">5 บท ถึง บทสุดท้าย</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">การคืนค่าการสำรองข้อมูล
\nไม่พบแหล่งที่มาของ %1$s</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="file_saved">แฟ้มที่บันทึกไว้ที่ %1$s</string>
<string name="backup_choice">คุณต้องการสำรองข้อมูลอะไร\?</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="choices_reset">รีเซ็ตตัวเลือกกล่องโต้ตอบ</string>
<string name="pref_clear_database">ล้างฐานข้อมูล</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>
<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">คุณแน่ใจหรือไม่ว่าคุณต้องการเอามังงะที่เลือกออก\?</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">มังงะภายในเครื่อง</string>
<string name="other_source">อื่น ๆ</string>
<string name="invalid_combination">ไม่สามารถเลือกค่าเริ่มต้นพร้อมกับหมวดหมู่อื่น ๆ ได้</string>
<string name="added_to_library">เพิ่มมังงะในห้องสมุดของคุณแล้ว</string>
<string name="action_global_search_hint">ค้นหาทั้งหมด…</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>
<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="pref_read_with_long_tap">แตะนาน</string>
<string name="action_open_in_web_view">เปิดในมุมมองเว็บ</string>
<string name="pref_true_color">สี 32บิต</string>
<string name="pref_skip_read_chapters">ข้ามตอนที่อ่านแล้ว</string>
<string name="pref_color_filter_mode">แสดงตัวอักษรชัดเจน</string>
<string name="filter_mode_overlay">วางซ้อน</string>
<string name="filter_mode_screen">หน้าจอ</string>
<string name="filter_mode_lighten">ดอดจ์ / แบ่งเบา</string>
<string name="pref_library_update_prioritization">ลำดับการปรับปรุงห้องสมุด</string>
<string name="pref_library_update_prioritization_summary">เลือกลำดับที่ให้ Tachiyomi ตรวจสอบการปรับปรุง</string>
<string name="action_forward">เดินหน้า</string>
<string name="action_refresh">โหลดใหม่</string>
<string name="no_results_found">ไม่พบผลลัพธ์</string>
<string name="backup_restore_content">คืนค่าใช้แหล่งที่มาเพื่อดึงข้อมูลอาจมีค่าใช้จ่ายของผู้ให้บริการ
\nตรวจสอบให้แน่ใจว่าคุณได้เข้าสู่ระบบอย่างถูกต้องในแหล่งที่ต้องใช้ก่อนที่จะกู้</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">ไม่ได้ตั้งค่า URL ของมังงะ โปรดคลิกที่ชื่อและเลือกมังงะอีกครั้ง</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>
<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 - Ch.%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">กรุณาเพิ่มมังงะในห้องสมุดของคุณก่อนที่จะทำเช่นนี้</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">ภาพฉากหลังของมังงะ</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>
<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">การดาวน์โหลด</string>
<string name="reader_pull_up_for_more_options">ดึงขึ้นเพื่อดูตัวเลือกเพิ่มเติม</string>
<string name="filter_mode_multiply">หลากหลาย</string>
<string name="filter_mode_darken">มืดมิด</string>
<string name="migration_selection_prompt">เลือกแหล่งที่มา</string>
</resources>

View File

@ -450,4 +450,8 @@
<string name="system_theme">Sistem öntanımlı</string>
<string name="system_darkblue_theme">Sistem öntanımlı (Koyu mavi)</string>
<string name="system_amoled_theme">Sistem öntanımlı (AMOLED)</string>
<string name="action_forward">İleri</string>
<string name="action_refresh">Yenile</string>
<string name="no_results_found">Sonuç bulunmadı</string>
<string name="migration_selection_prompt">Taşınılacak bir kaynak seçin</string>
</resources>

View File

@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="name">Tên</string>
<!-- Activities and fragments labels (toolbar title) -->
<string name="label_settings">Cài đặt</string>
<string name="label_download_queue">Hàng chờ tải xuống</string>
@ -13,7 +12,6 @@
<string name="label_categories">Hạng mục</string>
<string name="label_selected">Đã chọn: %1$d</string>
<string name="label_backup">Sao lưu</string>
<!-- Actions -->
<string name="action_settings">Cài đặt</string>
<string name="action_filter">Bộ lọc</string>
@ -70,11 +68,9 @@
<string name="action_save">Lưu lại</string>
<string name="action_reset">Cài lại</string>
<string name="action_undo">Quay lại</string>
<!-- Operations -->
<string name="deleting">Đang xóa…</string>
<string name="loading">Đang tải…</string>
<!-- Preferences -->
<!-- Subsections -->
<string name="pref_category_general">Chung</string>
@ -84,7 +80,6 @@
<string name="pref_category_tracking">Theo dõi</string>
<string name="pref_category_advanced">Nâng cao</string>
<string name="pref_category_about">Giới thiệu</string>
<!-- General section -->
<string name="pref_library_columns">Số truyện hiển thị trong thư viện trên cùng một dòng</string>
<string name="portrait">Dọc</string>
@ -113,7 +108,6 @@
<string name="pref_start_screen">Màn hình khởi động</string>
<string name="pref_language">Ngôn ngữ</string>
<string name="system_default">Mặc định hệ thống</string>
<!-- Reader section -->
<string name="pref_fullscreen">Toàn màn hình</string>
<string name="pref_lock_orientation">Khóa xoay</string>
@ -124,7 +118,7 @@
<string name="pref_keep_screen_on">Giữ màn hình bật</string>
<string name="pref_reader_navigation">Điều hướng</string>
<string name="pref_read_with_volume_keys">Phím âm lượng</string>
<string name="pref_read_with_tapping">Nhấn giữ</string>
<string name="pref_read_with_tapping">Nhấn</string>
<string name="pref_reader_theme">Màu nền</string>
<string name="white_background">Trắng</string>
<string name="black_background">Đen</string>
@ -156,8 +150,6 @@
<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 -->
<string name="pref_download_directory">Thư mục tải xuống</string>
<string name="pref_download_only_over_wifi">Chỉ tải trên Wi-Fi</string>
@ -171,10 +163,8 @@
<string name="fourth_to_last">Bốn chương gần nhất</string>
<string name="fifth_to_last">Năm chương gần nhất</string>
<string name="pref_download_new">Tải chương mới</string>
<!-- Sync section -->
<string name="services">Dịch vụ</string>
<!-- Advanced section -->
<string name="pref_clear_chapter_cache">Dọn dẹp bộ nhớ đệm</string>
<string name="used_cache">Đã sử dụng: %1$s</string>
@ -189,7 +179,6 @@
<string name="clear_database_completed">Các mục đã bị xóa</string>
<string name="pref_refresh_library_metadata">Làm mới siêu dữ liệu của thư viện</string>
<string name="pref_refresh_library_metadata_summary">Cập nhật ảnh bìa, thể loại, thông tin trạng thái của các bộ truyện</string>
<!-- About section -->
<string name="version">Phiên bản</string>
<string name="build_time">Thời gian tạo</string>
@ -198,8 +187,6 @@
<!-- ACRA -->
<string name="pref_enable_acra">Gửi báo cáo lỗi</string>
<string name="pref_acra_summary">Giúp đỡ sửa lỗi. Sẽ không có thông tin nhạy cảm nào được gửi đi</string>
<!-- Login dialog -->
<string name="login_title">Đăng nhập vào %1$s</string>
<string name="username">Tên đăng nhập</string>
@ -209,21 +196,17 @@
<string name="login_success">Đăng nhập thành công</string>
<string name="invalid_login">Lỗi đăng nhập</string>
<string name="unknown_error">Lỗi không xác định</string>
<!-- Library fragment -->
<string name="library_search_hint">Tiêu đề truyện hoặc tên tác giả…</string>
<string name="updating_category">Cập nhật danh mục</string>
<string name="confirm_delete_manga">Bạn có chắc là muốn xóa truyện đã chọn không\?</string>
<!-- Catalogue fragment -->
<string name="source_requires_login">Nguồn truyện này yêu cầu đăng nhập</string>
<string name="select_source">Chọn một nguồn truyện</string>
<string name="no_valid_sources">Vui lòng chọn ít nhất một nguồn truyện hợp lệ</string>
<string name="no_more_results">Không có thêm kết quả nào</string>
<!-- Manga activity -->
<string name="manga_not_in_db">Truyện này đã bị xóa khỏi cơ sở dữ liệu!</string>
<!-- Manga info fragment -->
<string name="manga_detail_tab">Thông tin</string>
<string name="description">Mô tả</string>
@ -244,7 +227,6 @@
<string name="shortcut_title">Tiêu đề của lối tắt</string>
<string name="icon_shape">Kiểu biểu tượng</string>
<string name="icon_creation_fail">Tạo lối tắt thất bại!</string>
<!-- Manga chapters fragment -->
<string name="manga_chapters_tab">Danh sách chương</string>
<string name="manga_chapter_no_title">Không có tiêu đề</string>
@ -268,7 +250,6 @@
<string name="download_all">Tải về toàn bộ</string>
<string name="download_unread">Tải các chương chưa đọc</string>
<string name="confirm_delete_chapters">Bạn có chắc muốn xóa các chương đã chọn?</string>
<!-- MyAnimeList fragment -->
<string name="manga_tracking_tab">Theo dõi</string>
<string name="reading">Đang đọc</string>
@ -280,23 +261,18 @@
<string name="title">Tiêu đề</string>
<string name="status">Trạng thái</string>
<string name="chapters">Các chương</string>
<!-- Category activity -->
<string name="error_category_exists">Tên danh mục này đã tồn tại!</string>
<string name="snack_categories_deleted">Danh mục đã bị xóa</string>
<!-- Dialog option with checkbox view -->
<string name="dialog_with_checkbox_remove_description">Sẽ xóa ngày đọc các chương. Bạn chắc chứ?</string>
<string name="dialog_with_checkbox_reset">Làm mới mọi chương của truyện này</string>
<!-- SnackBar -->
<string name="snack_add_to_library">Thêm truyện vào thư viện?</string>
<!-- Image notifier -->
<string name="picture_saved">Đã lưu ảnh</string>
<string name="saving_picture">Đang lưu ảnh</string>
<string name="options">Tùy chọn</string>
<!-- Reader activity -->
<string name="custom_filter">Bộ lọc tùy chỉnh</string>
<string name="set_as_cover">Đặt làm ảnh bìa</string>
@ -312,16 +288,12 @@
<string name="confirm_update_manga_sync">Cập nhật chương mới nhất của dịch vụ đang bật đến %1$d\?</string>
<string name="confirm_set_image_as_cover">Bạn có chắc muốn đặt ảnh này làm ảnh bìa?</string>
<string name="viewer_for_this_series">Kiểu đọc cho series này</string>
<!-- Backup fragment -->
<string name="backup">Sao lưu</string>
<!-- Recent manga fragment -->
<string name="recent_manga_source">%1$s - Ch.%2$s</string>
<!-- Downloads activity and service -->
<string name="download_queue_error">Có lỗi đã xảy ra khi đang tải chương. Bạn có thể thử lại trong phần tải xuống</string>
<!-- Library update service notifications -->
<string name="notification_update_progress">Tiến độ cập nhật: %1$d/%2$d</string>
<string name="notification_new_chapters">"Đã tìm thấy chương mới "</string>
@ -331,12 +303,10 @@
<string name="notification_not_connected_to_ac_body">Chưa được kết nối đến nguồn điện</string>
<string name="notification_no_connection_title">Đã hủy đồng bộ</string>
<string name="notification_no_connection_body">Không có kết nối</string>
<!-- File Picker Titles -->
<string name="file_select_cover">Chọn ảnh bìa</string>
<string name="file_select_backup">Chọn file sao lưu</string>
<string name="file_select_icon">Chọn biểu tượng phím tắt</string>
<!--UpdateCheck-->
<string name="update_check_title">Có bản cập nhật mới!</string>
<string name="update_check_confirm">Tải xuống</string>
@ -344,24 +314,20 @@
<string name="update_check_no_new_updates">Không có cập nhật mới</string>
<string name="update_check_download_started">Đã bắt đầu tải xuống</string>
<string name="update_check_look_for_updates">Đang tìm bản cập nhật mới</string>
<!--UpdateCheck Notifications-->
<string name="update_check_notification_file_download">Tải xuống cập nhật</string>
<string name="update_check_notification_download_in_progress">Đang trong quá trình tải xuống</string>
<string name="update_check_notification_download_complete">Đã tải xong</string>
<string name="update_check_notification_download_error">Lỗi khi tải xuống</string>
<string name="update_check_notification_update_available">Có cập nhật mới</string>
<!--Content Description-->
<string name="description_backdrop">Ảnh nền của truyện</string>
<string name="description_cover">Ảnh bìa của truyện</string>
<!-- Information Text -->
<string name="information_no_downloads">Không có tải xuống</string>
<string name="information_no_recent">Không có các chương gần đây</string>
<string name="information_no_recent_manga">Không có truyện đã đọc gần đây</string>
<string name="information_empty_library">Thư viện trống, bạn có thể thêm truyện vào thư viện từ Danh mục.</string>
<!-- Download Notification -->
<string name="download_notifier_downloader_title">Trình tải xuống</string>
<string name="download_notifier_title_error">Lỗi</string>
@ -447,7 +413,7 @@
\n%2$s lỗi đã được tìm thấy.</string>
<string name="backup_restore_content">Khôi phục sử dụng nguồn để lấy dữ liệu, yêu cầu sử dụng mạng
\nHãy đảm bảo rằng bạn đã đăng nhập đúng cách vào các nguồn trước khi khôi phục.</string>
<string name="file_saved">Tập tin được lưu tới %1$s</string>
<string name="file_saved">Tập tin được lưu được %1$s</string>
<string name="backup_choice">Bạn có muốn sao lưu không\?</string>
<string name="restoring_backup">Khôi phục sao lưu</string>
<string name="creating_backup">Đang tạo bản sao lưu</string>
@ -503,4 +469,20 @@
<string name="system_theme">Mặc định hệ thống</string>
<string name="system_darkblue_theme">Mặc định hệ thống (Xanh đậm)</string>
<string name="system_amoled_theme">Mặc định hệ thống (AMOLED)</string>
<string name="pref_read_with_long_tap">Nhấn giữ mở hộp thoại</string>
<string name="reader_pull_up_for_more_options">Kéo xuống có nhiều tuỳ chọn</string>
<string name="action_open_in_web_view">Mở bằng webview</string>
<string name="pref_true_color">Màu 32-bit</string>
<string name="pref_skip_read_chapters">Bỏ qua chap đã đọc</string>
<string name="pref_color_filter_mode">Chế độ hòa trộn bộ lọc màu</string>
<string name="filter_mode_default">Mặc định</string>
<string name="filter_mode_overlay">Phủ lên</string>
<string name="filter_mode_multiply">Nhân</string>
<string name="label_help">Trợ giúp</string>
<string name="pref_library_update_prioritization">Thứ tự ưu tiên cập nhật</string>
<string name="pref_library_update_prioritization_summary">Chọn thứ tự để Tachiyomi kiểm tra cập nhật</string>
<string name="action_forward">Chuyển tiếp</string>
<string name="action_refresh">Làm mới</string>
<string name="no_results_found">Không tìm thấy kết quả nào</string>
<string name="migration_selection_prompt">Chọn 1 nguồn để di chuyển từ</string>
</resources>

View File

@ -128,7 +128,7 @@
<string name="system_default">系统默认</string>
<string name="default_category">默认标签</string>
<string name="default_category_summary">每次询问</string>
<string name="all_lang">All</string>
<string name="all_lang">全部</string>
<string name="ext_details">详细</string>
<string name="ext_update">更新</string>
<string name="ext_install">安装</string>
@ -306,7 +306,7 @@
<string name="square_icon">方形图标</string>
<string name="star_icon">星形图标</string>
<string name="shortcut_title">快捷方式标题</string>
<string name="shortcut_created">创建快捷方式</string>
<string name="shortcut_created">添加快捷方式至主屏幕</string>
<string name="icon_shape">图标形状</string>
<string name="icon_creation_fail">创建快捷方式失败!</string>
<string name="delete_downloads_for_manga">删除已下载的章节?</string>
@ -419,8 +419,8 @@
<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="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>
@ -441,9 +441,14 @@
<string name="action_open_in_web_view">用外部浏览器打开</string>
<string name="pref_true_color">32位色彩</string>
<string name="pref_skip_read_chapters">跳过已读章节</string>
<string name="pref_color_filter_mode">滤镜颜色模式</string>
<string name="pref_color_filter_mode">滤镜调和模式</string>
<string name="filter_mode_default">默认</string>
<string name="label_help">帮助</string>
<string name="pref_library_update_prioritization">书架更新顺序</string>
<string name="pref_library_update_prioritization_summary">选择Tachiyomi检查书架更新的顺序</string>
<string name="filter_mode_overlay">悬浮窗</string>
<string name="filter_mode_multiply">正片叠底</string>
<string name="filter_mode_screen">屏幕</string>
<string name="filter_mode_lighten">减淡/变亮</string>
<string name="filter_mode_darken">颜色加深/变暗</string>
</resources>

View File

@ -3,7 +3,7 @@
<string name="categories">分類</string>
<string name="manga">漫畫</string>
<string name="chapters">章節</string>
<string name="history">記錄</string>
<string name="history">歷史記錄</string>
<string name="label_settings">設定</string>
<string name="label_download_queue">下載佇列</string>
<string name="label_library">我的書櫃</string>
@ -367,7 +367,7 @@
<string name="information_empty_library">尚未收藏任何作品,請至書目檢索挖掘您的愛書。</string>
<string name="pref_refresh_library_metadata_summary">更新書封、類型、描述和連載狀態等漫畫簡介</string>
<string name="dialog_with_checkbox_reset">重設此漫畫所有章節</string>
<string name="custom_filter">自訂篩選器</string>
<string name="custom_filter">濾鏡</string>
<string name="download_progress">已下載 %1$d% %</string>
<string name="chapter_subtitle">第 %1$s 章</string>
<string name="migrate">遷移</string>
@ -385,7 +385,60 @@
<string name="transition_finished">已閱畢:</string>
<string name="transition_next">下一章:</string>
<string name="notification_new_chapters">發現新章節</string>
<string name="system_theme">系统默认</string>
<string name="system_darkblue_theme">系统默认 (深色帶藍)</string>
<string name="system_amoled_theme">系统默认 (全黑)</string>
<string name="pref_skip_read_chapters">略過已讀的章節</string>
<string name="pref_remove_after_read">閱畢後刪除</string>
<string name="page_downloaded">已複製頁面至「%1$s」</string>
<string name="transition_no_next">沒有下一章</string>
<string name="transition_no_previous">沒有前一章</string>
<string name="transition_pages_error">第 %1$s 頁載入失敗</string>
<string name="information_no_recent">沒有新章節</string>
<string name="download_notifier_page_error">部分頁面遺失</string>
<string name="download_notifier_page_ready_error">未載入部分頁面</string>
<string name="name">名稱</string>
<string name="track">追隨中</string>
<string name="action_next_unread">移至下個未讀</string>
<string name="action_open_log">打開記錄檔</string>
<string name="pref_category_tracking">跟隨中</string>
<string name="pref_auto_update_manga_sync">閱讀完後同步章節</string>
<string name="ext_trust">信任</string>
<string name="ext_untrusted">不信任</string>
<string name="untrusted_extension">不信任的擴充元件</string>
<string name="untrusted_extension_message">這個插件的憑證是未經認證的,並且它沒有被啟用。
\n
\n惡意插件可能讀取或儲存在Tachiyomi中的任何登錄憑證或是會執行任意程式碼。
\n
\n信任這個憑證即代表你願意承擔上述的風險。</string>
<string name="last_read_chapter">最後閱讀的章節</string>
<string name="pref_backup_slots">最大自動備份數</string>
<string name="error_opening_log">無法打開記錄檔</string>
<string name="restore_completed_content">已恢復 %1$s。
\n%2$s 出現錯誤。</string>
<string name="clear_database_confirmation">你確定嗎?將刪除未在書櫃的漫畫章節與閱讀進度的數據</string>
<string name="pref_refresh_library_tracking">更新同步數據</string>
<string name="pref_refresh_library_tracking_summary">更新同步服務的狀態、評分以及已讀章節</string>
<string name="library_search_hint">標題或作者…</string>
<string name="select_source">選擇一個來源</string>
<string name="no_valid_sources">請至少啟用一個有效的來源</string>
<string name="latest">最近更新</string>
<string name="manga_not_in_db">漫畫已被移出資料庫!</string>
<string name="manga_tracking_tab">跟隨中</string>
<string name="reading">閱讀中</string>
<string name="plan_to_read">加入閱讀清單</string>
<string name="repeating">重新讀取中</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="dialog_with_checkbox_remove_description">這將會清除此章節的閱讀日期,確定嗎?</string>
<string name="confirm_update_manga_sync">要從伺服器上同步上次已讀的最新章節到%1$d嗎</string>
<string name="transition_current">當前章節:</string>
<string name="transition_previous">上一章:</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="download_queue_error">下載時發生錯誤。請再試一次</string>
<string name="notification_new_chapters_text">%1$d</string>
<string name="notification_no_connection_body">連接不可用</string>
<string name="description_backdrop">漫畫背景</string>
<string name="download_notifier_unkown_error">下載時發生不可預期的錯誤</string>
</resources>

View File

@ -17,6 +17,8 @@
<color name="colorDarkPrimaryDark">#212121</color>
<color name="colorAmoledPrimary">@color/md_black_1000</color>
<color name="splashBackgroundColor">@color/colorPrimary</color>
<!-- Light Theme -->
<color name="colorAccentLight">@color/md_blue_A400</color>
<color name="textColorPrimaryLight">@color/md_black_1000_87</color>

View File

@ -168,7 +168,6 @@
<string name="pref_library_update_categories">Categories to include in global update</string>
<string name="all">All</string>
<string name="pref_library_update_prioritization">Library update order</string>
<string name="pref_library_update_prioritization_summary">Select the order in which Tachiyomi checks for update</string>
<string name="pref_library_update_restriction">Library update restrictions</string>
<string name="pref_library_update_restriction_summary">Update only when the conditions are met</string>
<string name="wifi">Wi-Fi</string>
@ -201,6 +200,7 @@
<string name="all_lang">All</string>
<string name="ext_details">Details</string>
<string name="ext_update">Update</string>
<string name="ext_obsolete">Obsolete</string>
<string name="ext_install">Install</string>
<string name="ext_pending">Pending</string>
<string name="ext_downloading">Downloading</string>
@ -213,6 +213,7 @@
<string name="ext_available">Available</string>
<string name="untrusted_extension">Untrusted extension</string>
<string name="untrusted_extension_message">This extension was signed with an untrusted certificate and wasn\'t activated.\n\nA malicious extension could read any login credentials stored in Tachiyomi or execute arbitrary code.\n\nBy trusting this certificate you accept these risks.</string>
<string name="obsolete_extension_message">This extension is no longer available.</string>
<string name="ext_version_info">Version: %1$s</string>
<string name="ext_language_info">Language: %1$s</string>
<string name="ext_empty_preferences">No preferences to edit for this extension</string>

View File

@ -415,4 +415,4 @@ class BackupTest {
chapter.url = "/read-online/$name-page-1.html"
return chapter
}
}
}

View File

@ -42,7 +42,8 @@ class ChapterRecognitionTest {
/**
* Called before test
*/
@Before fun setup() {
@Before
fun setup() {
manga = Manga.create(0).apply { title = "random" }
chapter = Chapter.create()
}
@ -50,7 +51,8 @@ class ChapterRecognitionTest {
/**
* Ch.xx base case
*/
@Test fun ChCaseBase() {
@Test
fun ChCaseBase() {
createManga("Mokushiroku Alice")
createChapter("Mokushiroku Alice Vol.1 Ch.4: Misrepresentation")
@ -61,7 +63,8 @@ class ChapterRecognitionTest {
/**
* Ch. xx base case but space after period
*/
@Test fun ChCaseBase2() {
@Test
fun ChCaseBase2() {
createManga("Mokushiroku Alice")
createChapter("Mokushiroku Alice Vol. 1 Ch. 4: Misrepresentation")
@ -72,7 +75,8 @@ class ChapterRecognitionTest {
/**
* Ch.xx.x base case
*/
@Test fun ChCaseDecimal() {
@Test
fun ChCaseDecimal() {
createManga("Mokushiroku Alice")
createChapter("Mokushiroku Alice Vol.1 Ch.4.1: Misrepresentation")
@ -87,7 +91,8 @@ class ChapterRecognitionTest {
/**
* Ch.xx.a base case
*/
@Test fun ChCaseAlpha() {
@Test
fun ChCaseAlpha() {
createManga("Mokushiroku Alice")
createChapter("Mokushiroku Alice Vol.1 Ch.4.a: Misrepresentation")
@ -106,7 +111,8 @@ class ChapterRecognitionTest {
/**
* Name containing one number base case
*/
@Test fun OneNumberCaseBase() {
@Test
fun OneNumberCaseBase() {
createManga("Bleach")
createChapter("Bleach 567 Down With Snowwhite")
@ -117,7 +123,8 @@ class ChapterRecognitionTest {
/**
* Name containing one number and decimal case
*/
@Test fun OneNumberCaseDecimal() {
@Test
fun OneNumberCaseDecimal() {
createManga("Bleach")
createChapter("Bleach 567.1 Down With Snowwhite")
@ -132,7 +139,8 @@ class ChapterRecognitionTest {
/**
* Name containing one number and alpha case
*/
@Test fun OneNumberCaseAlpha() {
@Test
fun OneNumberCaseAlpha() {
createManga("Bleach")
createChapter("Bleach 567.a Down With Snowwhite")
@ -151,7 +159,8 @@ class ChapterRecognitionTest {
/**
* Chapter containing manga title and number base case
*/
@Test fun MangaTitleCaseBase() {
@Test
fun MangaTitleCaseBase() {
createManga("Solanin")
createChapter("Solanin 028 Vol. 2")
@ -162,7 +171,8 @@ class ChapterRecognitionTest {
/**
* Chapter containing manga title and number decimal case
*/
@Test fun MangaTitleCaseDecimal() {
@Test
fun MangaTitleCaseDecimal() {
createManga("Solanin")
createChapter("Solanin 028.1 Vol. 2")
@ -177,7 +187,8 @@ class ChapterRecognitionTest {
/**
* Chapter containing manga title and number alpha case
*/
@Test fun MangaTitleCaseAlpha() {
@Test
fun MangaTitleCaseAlpha() {
createManga("Solanin")
createChapter("Solanin 028.a Vol. 2")
@ -196,7 +207,8 @@ class ChapterRecognitionTest {
/**
* Extreme base case
*/
@Test fun ExtremeCaseBase() {
@Test
fun ExtremeCaseBase() {
createManga("Onepunch-Man")
createChapter("Onepunch-Man Punch Ver002 028")
@ -207,7 +219,8 @@ class ChapterRecognitionTest {
/**
* Extreme base case decimal
*/
@Test fun ExtremeCaseDecimal() {
@Test
fun ExtremeCaseDecimal() {
createManga("Onepunch-Man")
createChapter("Onepunch-Man Punch Ver002 028.1")
@ -222,7 +235,8 @@ class ChapterRecognitionTest {
/**
* Extreme base case alpha
*/
@Test fun ExtremeCaseAlpha() {
@Test
fun ExtremeCaseAlpha() {
createManga("Onepunch-Man")
createChapter("Onepunch-Man Punch Ver002 028.a")
@ -241,7 +255,8 @@ class ChapterRecognitionTest {
/**
* Chapter containing .v2
*/
@Test fun dotV2Case() {
@Test
fun dotV2Case() {
createChapter("Vol.1 Ch.5v.2: Alones")
ChapterRecognition.parseChapterNumber(chapter, manga)
assertThat(chapter.chapter_number).isEqualTo(5f)
@ -250,7 +265,8 @@ class ChapterRecognitionTest {
/**
* Check for case with number in manga title
*/
@Test fun numberInMangaTitleCase() {
@Test
fun numberInMangaTitleCase() {
createManga("Ayame 14")
createChapter("Ayame 14 1 - The summer of 14")
ChapterRecognition.parseChapterNumber(chapter, manga)
@ -260,7 +276,8 @@ class ChapterRecognitionTest {
/**
* Case with space between ch. x
*/
@Test fun spaceAfterChapterCase() {
@Test
fun spaceAfterChapterCase() {
createManga("Mokushiroku Alice")
createChapter("Mokushiroku Alice Vol.1 Ch. 4: Misrepresentation")
ChapterRecognition.parseChapterNumber(chapter, manga)
@ -270,7 +287,8 @@ class ChapterRecognitionTest {
/**
* Chapter containing mar(ch)
*/
@Test fun marchInChapterCase() {
@Test
fun marchInChapterCase() {
createManga("Ayame 14")
createChapter("Vol.1 Ch.1: March 25 (First Day Cohabiting)")
ChapterRecognition.parseChapterNumber(chapter, manga)
@ -280,7 +298,8 @@ class ChapterRecognitionTest {
/**
* Chapter containing range
*/
@Test fun rangeInChapterCase() {
@Test
fun rangeInChapterCase() {
createChapter("Ch.191-200 Read Online")
ChapterRecognition.parseChapterNumber(chapter, manga)
assertThat(chapter.chapter_number).isEqualTo(191f)
@ -289,7 +308,8 @@ class ChapterRecognitionTest {
/**
* Chapter containing multiple zeros
*/
@Test fun multipleZerosCase() {
@Test
fun multipleZerosCase() {
createChapter("Vol.001 Ch.003: Kaguya Doesn't Know Much")
ChapterRecognition.parseChapterNumber(chapter, manga)
assertThat(chapter.chapter_number).isEqualTo(3f)
@ -298,7 +318,8 @@ class ChapterRecognitionTest {
/**
* Chapter with version before number
*/
@Test fun chapterBeforeNumberCase() {
@Test
fun chapterBeforeNumberCase() {
createManga("Onepunch-Man")
createChapter("Onepunch-Man Punch Ver002 086 : Creeping Darkness [3]")
ChapterRecognition.parseChapterNumber(chapter, manga)
@ -308,7 +329,8 @@ class ChapterRecognitionTest {
/**
* Case with version attached to chapter number
*/
@Test fun vAttachedToChapterCase() {
@Test
fun vAttachedToChapterCase() {
createManga("Ansatsu Kyoushitsu")
createChapter("Ansatsu Kyoushitsu 011v002: Assembly Time")
ChapterRecognition.parseChapterNumber(chapter, manga)
@ -319,7 +341,8 @@ class ChapterRecognitionTest {
* Case where the chapter title contains the chapter
* But wait it's not actual the chapter number.
*/
@Test fun NumberAfterMangaTitleWithChapterInChapterTitleCase() {
@Test
fun NumberAfterMangaTitleWithChapterInChapterTitleCase() {
createChapter("Tokyo ESP 027: Part 002: Chapter 001")
createManga("Tokyo ESP")
ChapterRecognition.parseChapterNumber(chapter, manga)
@ -329,7 +352,8 @@ class ChapterRecognitionTest {
/**
* unParsable chapter
*/
@Test fun unParsableCase() {
@Test
fun unParsableCase() {
createChapter("Foo")
ChapterRecognition.parseChapterNumber(chapter, manga)
assertThat(chapter.chapter_number).isEqualTo(-1f)
@ -338,7 +362,8 @@ class ChapterRecognitionTest {
/**
* chapter with time in title
*/
@Test fun timeChapterCase() {
@Test
fun timeChapterCase() {
createChapter("Fairy Tail 404: 00:00")
ChapterRecognition.parseChapterNumber(chapter, manga)
assertThat(chapter.chapter_number).isEqualTo(404f)
@ -347,7 +372,8 @@ class ChapterRecognitionTest {
/**
* chapter with alpha without dot
*/
@Test fun alphaWithoutDotCase() {
@Test
fun alphaWithoutDotCase() {
createChapter("Asu No Yoichi 19a")
ChapterRecognition.parseChapterNumber(chapter, manga)
assertThat(chapter.chapter_number).isEqualTo(19.1f)
@ -356,7 +382,8 @@ class ChapterRecognitionTest {
/**
* Chapter title containing extra and vol
*/
@Test fun chapterContainingExtraCase() {
@Test
fun chapterContainingExtraCase() {
createManga("Fairy Tail")
createChapter("Fairy Tail 404.extravol002")
@ -375,7 +402,8 @@ class ChapterRecognitionTest {
/**
* Chapter title containing omake (japanese extra) and vol
*/
@Test fun chapterContainingOmakeCase() {
@Test
fun chapterContainingOmakeCase() {
createManga("Fairy Tail")
createChapter("Fairy Tail 404.omakevol002")
@ -394,7 +422,8 @@ class ChapterRecognitionTest {
/**
* Chapter title containing special and vol
*/
@Test fun chapterContainingSpecialCase() {
@Test
fun chapterContainingSpecialCase() {
createManga("Fairy Tail")
createChapter("Fairy Tail 404.specialvol002")
@ -413,7 +442,8 @@ class ChapterRecognitionTest {
/**
* Chapter title containing comma's
*/
@Test fun chapterContainingCommasCase() {
@Test
fun chapterContainingCommasCase() {
createManga("One Piece")
createChapter("One Piece 300,a")
@ -432,7 +462,8 @@ class ChapterRecognitionTest {
/**
* Test for chapters containing season
*/
@Test fun chapterContainingSeasonCase() {
@Test
fun chapterContainingSeasonCase() {
createManga("D.I.C.E")
createChapter("D.I.C.E[Season 001] Ep. 007")
@ -444,7 +475,8 @@ class ChapterRecognitionTest {
/**
* Test for chapters in format sx - chapter xx
*/
@Test fun chapterContainingSeasonCase2() {
@Test
fun chapterContainingSeasonCase2() {
createManga("The Gamer")
createChapter("S3 - Chapter 20")
@ -455,7 +487,8 @@ class ChapterRecognitionTest {
/**
* Test for chapters ending with s
*/
@Test fun chaptersEndingWithS() {
@Test
fun chaptersEndingWithS() {
createManga("One Outs")
createChapter("One Outs 001")

View File

@ -26,7 +26,7 @@ import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.InjektModule
import uy.kohesive.injekt.api.InjektRegistrar
import uy.kohesive.injekt.api.addSingleton
import java.util.*
import java.util.ArrayList
@Config(constants = BuildConfig::class, sdk = intArrayOf(Build.VERSION_CODES.LOLLIPOP))
@RunWith(CustomRobolectricGradleTestRunner::class)