diff --git a/.gitattributes b/.gitattributes
index 7b9779ee53..1ca443da48 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -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
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/anilist/Anilist.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/anilist/Anilist.kt
index fde18a22d6..043d2653fe 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/track/anilist/Anilist.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/anilist/Anilist.kt
@@ -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)
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/bangumi/Avatar.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/bangumi/Avatar.kt
index 02e0b2efbb..d058a85f59 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/track/bangumi/Avatar.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/bangumi/Avatar.kt
@@ -1,7 +1,7 @@
package eu.kanade.tachiyomi.data.track.bangumi
data class Avatar(
- val large: String? = "",
- val medium: String? = "",
- val small: String? = ""
-)
\ No newline at end of file
+ val large: String? = "",
+ val medium: String? = "",
+ val small: String? = ""
+)
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/bangumi/Bangumi.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/bangumi/Bangumi.kt
index 0d93e1fb73..147dde6de6 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/track/bangumi/Bangumi.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/bangumi/Bangumi.kt
@@ -13,132 +13,132 @@ import uy.kohesive.injekt.injectLazy
class Bangumi(private val context: Context, id: Int) : TrackService(id) {
- override fun getScoreList(): List {
- 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
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.
- Tập tin được lưu tới %1$s
+ Tập tin được lưu được %1$s
Bạn có muốn sao lưu không\?
Khôi phục sao lưu
Đang tạo bản sao lưu
@@ -503,4 +469,20 @@
Mặc định hệ thống
Mặc định hệ thống (Xanh đậm)
Mặc định hệ thống (AMOLED)
+ Nhấn giữ mở hộp thoại
+ Kéo xuống có nhiều tuỳ chọn
+ Mở bằng webview
+ Màu 32-bit
+ Bỏ qua chap đã đọc
+ Chế độ hòa trộn bộ lọc màu
+ Mặc định
+ Phủ lên
+ Nhân
+ Trợ giúp
+ Thứ tự ưu tiên cập nhật
+ Chọn thứ tự để Tachiyomi kiểm tra cập nhật
+ Chuyển tiếp
+ Làm mới
+ Không tìm thấy kết quả nào
+ Chọn 1 nguồn để di chuyển từ
\ No newline at end of file
diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml
index a23e8901fc..6bc7aac872 100644
--- a/app/src/main/res/values-zh-rCN/strings.xml
+++ b/app/src/main/res/values-zh-rCN/strings.xml
@@ -128,7 +128,7 @@
系统默认
默认标签
每次询问
- All
+ 全部
详细
更新
安装
@@ -306,7 +306,7 @@
方形图标
星形图标
快捷方式标题
- 已创建快捷方式
+ 已添加快捷方式至主屏幕
图标形状
创建快捷方式失败!
删除已下载的章节?
@@ -419,8 +419,8 @@
没有下载中的任务
无最近章节
无最近阅读
- 你的书架是空的哦,请去发现栏寻找漫画进行收藏吧
- 你还没有标签。你可以点击加号按钮创建一个标签以管理书架
+ 你的书架为空,您可从发现添加漫画至书架
+ 你还没有漫画类别。点击右下方的加号按钮创建一个类别以管理书架
下载
错误
下载时发生不可预期的错误
@@ -441,9 +441,14 @@
用外部浏览器打开
32位色彩
跳过已读章节
- 滤镜颜色模式
+ 滤镜调和模式
默认
帮助
书架更新顺序
选择Tachiyomi检查书架更新的顺序
+ 悬浮窗
+ 正片叠底
+ 屏幕
+ 减淡/变亮
+ 颜色加深/变暗
\ No newline at end of file
diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml
index ad0a84027c..52aa48cf63 100644
--- a/app/src/main/res/values-zh-rTW/strings.xml
+++ b/app/src/main/res/values-zh-rTW/strings.xml
@@ -3,7 +3,7 @@
分類
漫畫
章節
- 記錄
+ 歷史記錄
設定
下載佇列
我的書櫃
@@ -367,7 +367,7 @@
尚未收藏任何作品,請至書目檢索挖掘您的愛書。
更新書封、類型、描述和連載狀態等漫畫簡介
重設此漫畫所有章節
- 自訂篩選器
+ 濾鏡
已下載 %1$d% %
第 %1$s 章
遷移
@@ -385,7 +385,60 @@
已閱畢:
下一章:
發現新章節
- 系统默认
- 系统默认 (深色帶藍)
- 系统默认 (全黑)
+ 略過已讀的章節
+ 閱畢後刪除
+ 已複製頁面至「%1$s」
+ 沒有下一章
+ 沒有前一章
+ 第 %1$s 頁載入失敗
+ 沒有新章節
+ 部分頁面遺失
+ 未載入部分頁面
+ 名稱
+ 追隨中
+ 移至下個未讀
+ 打開記錄檔
+ 跟隨中
+ 閱讀完後同步章節
+ 信任
+ 不信任
+ 不信任的擴充元件
+ 這個插件的憑證是未經認證的,並且它沒有被啟用。
+\n
+\n惡意插件可能讀取或儲存在Tachiyomi中的任何登錄憑證或是會執行任意程式碼。
+\n
+\n信任這個憑證,即代表你願意承擔上述的風險。
+ 最後閱讀的章節
+ 最大自動備份數
+ 無法打開記錄檔
+ 已恢復 %1$s。
+\n%2$s 出現錯誤。
+ 你確定嗎?將刪除未在書櫃的漫畫章節與閱讀進度的數據
+ 更新同步數據
+ 更新同步服務的狀態、評分以及已讀章節
+ 標題或作者…
+ 選擇一個來源
+ 請至少啟用一個有效的來源
+ 最近更新
+ 漫畫已被移出資料庫!
+ 跟隨中
+ 閱讀中
+ 加入閱讀清單
+ 重新讀取中
+ 已開始
+ 類型
+ 作者
+ 漫畫網址未設置,請點擊標題再選擇一次漫畫
+ 這將會清除此章節的閱讀日期,確定嗎?
+ 要從伺服器上同步上次已讀的最新章節到%1$d嗎?
+ 當前章節:
+ 上一章:
+ %1$s - 第%2$s章
+ 選擇需要遷移的來源
+ 選擇需要移動的數據
+ 下載時發生錯誤。請再試一次
+ %1$d
+ 連接不可用
+ 漫畫背景
+ 下載時發生不可預期的錯誤
\ No newline at end of file
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 3269b27774..14d86763aa 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -17,6 +17,8 @@
#212121
@color/md_black_1000
+ @color/colorPrimary
+
@color/md_blue_A400
@color/md_black_1000_87
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 6376cf9897..8c8521141b 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -168,7 +168,6 @@
Categories to include in global update
All
Library update order
- Select the order in which Tachiyomi checks for update
Library update restrictions
Update only when the conditions are met
Wi-Fi
@@ -201,6 +200,7 @@
All
Details
Update
+ Obsolete
Install
Pending
Downloading
@@ -213,6 +213,7 @@
Available
Untrusted extension
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.
+ This extension is no longer available.
Version: %1$s
Language: %1$s
No preferences to edit for this extension
diff --git a/app/src/test/java/eu/kanade/tachiyomi/data/backup/BackupTest.kt b/app/src/test/java/eu/kanade/tachiyomi/data/backup/BackupTest.kt
index 7e740c2364..3b83814f9e 100644
--- a/app/src/test/java/eu/kanade/tachiyomi/data/backup/BackupTest.kt
+++ b/app/src/test/java/eu/kanade/tachiyomi/data/backup/BackupTest.kt
@@ -415,4 +415,4 @@ class BackupTest {
chapter.url = "/read-online/$name-page-1.html"
return chapter
}
-}
\ No newline at end of file
+}
diff --git a/app/src/test/java/eu/kanade/tachiyomi/data/database/ChapterRecognitionTest.kt b/app/src/test/java/eu/kanade/tachiyomi/data/database/ChapterRecognitionTest.kt
index ee8c1f33a4..452da9b303 100644
--- a/app/src/test/java/eu/kanade/tachiyomi/data/database/ChapterRecognitionTest.kt
+++ b/app/src/test/java/eu/kanade/tachiyomi/data/database/ChapterRecognitionTest.kt
@@ -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")
diff --git a/app/src/test/java/eu/kanade/tachiyomi/data/library/LibraryUpdateServiceTest.kt b/app/src/test/java/eu/kanade/tachiyomi/data/library/LibraryUpdateServiceTest.kt
index a86e1f6446..bfd87f5af0 100644
--- a/app/src/test/java/eu/kanade/tachiyomi/data/library/LibraryUpdateServiceTest.kt
+++ b/app/src/test/java/eu/kanade/tachiyomi/data/library/LibraryUpdateServiceTest.kt
@@ -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)