From 325a8be484f3977b13994f7b30e5dc83e9c6d365 Mon Sep 17 00:00:00 2001 From: Zakhar Timoshenko Date: Sun, 18 Feb 2024 23:56:19 +0300 Subject: [PATCH 01/39] Fix wrong sources count if NSFW sources are disabled --- .../org/koitharu/kotatsu/explore/data/MangaSourcesRepository.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/explore/data/MangaSourcesRepository.kt b/app/src/main/kotlin/org/koitharu/kotatsu/explore/data/MangaSourcesRepository.kt index 6ec61efcd..884689c9a 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/explore/data/MangaSourcesRepository.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/explore/data/MangaSourcesRepository.kt @@ -57,7 +57,7 @@ class MangaSourcesRepository @Inject constructor( observeIsNsfwDisabled(), dao.observeEnabled(SourcesSortOrder.MANUAL), ) { skipNsfw, sources -> - sources.count { skipNsfw || !MangaSource(it.source).isNsfw() } + sources.count { !skipNsfw || !MangaSource(it.source).isNsfw() } }.distinctUntilChanged() } From b4d52f1367b491d8b136224f1a0fe89d0fd579d9 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Tue, 20 Feb 2024 12:45:51 +0200 Subject: [PATCH 02/39] Fix track worker notification behavior --- .../main/kotlin/org/koitharu/kotatsu/tracker/work/TrackWorker.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/tracker/work/TrackWorker.kt b/app/src/main/kotlin/org/koitharu/kotatsu/tracker/work/TrackWorker.kt index c868eb610..41dccf6c4 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/tracker/work/TrackWorker.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/tracker/work/TrackWorker.kt @@ -293,6 +293,7 @@ class TrackWorker @AssistedInject constructor( setCategory(NotificationCompat.CATEGORY_SERVICE) setDefaults(0) setOngoing(false) + setOnlyAlertOnce(true) setSilent(true) setContentIntent( PendingIntentCompat.getActivity( From b5497c571eaaeb2d614a3436067d81b4a22c7fbf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuz=20Ersen?= Date: Sat, 24 Feb 2024 00:02:07 +0100 Subject: [PATCH 03/39] Translated using Weblate (Turkish) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 100.0% (596 of 596 strings) Translated using Weblate (Turkish) Currently translated at 100.0% (596 of 596 strings) Translated using Weblate (Turkish) Currently translated at 100.0% (595 of 595 strings) Co-authored-by: Oğuz Ersen Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/tr/ Translation: Kotatsu/Strings --- app/src/main/res/values-tr/strings.xml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 19cf3b48f..d16754c6f 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -344,7 +344,7 @@ Sunucu hatası (%1$d). Lütfen daha sonra tekrar deneyin Kaydedilen mangalar Uygulama simgesine uzun basarak son mangaları kullanılabilir hale getirin - Fare ve klavye kullanırken sonraki seçeneği sizi her zaman bir sonraki sayfaya götürür. + Sağ kenara dokunulduğunda veya sağ tuşa basıldığında her zaman bir sonraki sayfaya geçilir. Kaynak devre dışı İçerik ön yüklemesi Geçerli olarak işaretle @@ -588,4 +588,9 @@ Yeni bölümlerin denetlenmesi devre dışı Tahmini okuma süresini göster Süre tahmin değeri yanlış olabilir + Gezinme çubuğunda etiketleri göster + Sayfalar kaydediliyor + Her seferinde hedef dizini sor + Öntanımlı sayfa kaydetme dizini + Geçmişten kaldır \ No newline at end of file From 82049343599ecc1ca8d96504feed75298d3c4cb8 Mon Sep 17 00:00:00 2001 From: gekka <1778962971@qq.com> Date: Sat, 24 Feb 2024 00:02:07 +0100 Subject: [PATCH 04/39] Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (596 of 596 strings) Translated using Weblate (Chinese (Simplified)) Currently translated at 99.8% (595 of 596 strings) Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (596 of 596 strings) Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (596 of 596 strings) Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (596 of 596 strings) Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (596 of 596 strings) Translated using Weblate (Chinese (Simplified)) Currently translated at 99.4% (592 of 595 strings) Co-authored-by: gekka <1778962971@qq.com> Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/zh_Hans/ Translation: Kotatsu/Strings --- app/src/main/res/values-zh-rCN/strings.xml | 133 +++++++++++---------- 1 file changed, 69 insertions(+), 64 deletions(-) diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index a42004fd2..73328b103 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -4,11 +4,11 @@ 本地 收藏 历史 - 发生错误 + 出错了 网络错误 章节 列表 - 数据已恢复,但发生了一些错误 + 数据已恢复,但出现了一些错误 正在处理… 最新 评分 @@ -24,13 +24,13 @@ 分组 点击重试 所选模式只会在此漫画上使用 - 需要通过验证 + 需要通过人机身份验证 开始验证 今天 清除 Cookies 有新的可用图源 根据你的喜好推荐漫画 - 所有数据都在本地设备上进行分析,不会发送到其他地方。 + 所有数据都在本地分析,不会发送到其他地方。 从不 发送正在阅读漫画的更新通知 R18 @@ -49,13 +49,13 @@ %1$d/%2$d 章 关闭 重试 - 清除历史 + 清除历史记录 结果为空 暂无历史记录 阅读 暂无漫画收藏 收藏此漫画 - 新分类 + 添加新分类 添加 保存 分享 @@ -77,10 +77,10 @@ 跟随系统 页面 清除 - 要永久清除所有阅读历史吗? + 确定永久清除所有阅读历史吗? 删除 已从本地存储中删除“%s” - 保存本页 + 保存图片 保存成功 分享图片 导入 @@ -96,7 +96,7 @@ 网格大小 在%s上搜索 删除漫画 - 要从设备中永久删除\"%s\"吗? + 确定从设备中永久删除\"%s\"吗? 阅读 翻页方式 音量键 @@ -104,7 +104,7 @@ 点击边缘 错误 清除缩略图缓存 - 清除搜索历史 + 清除搜索记录 清除完毕 仅限滑动手势 内部存储 @@ -112,7 +112,7 @@ 图源域名 发现新版本 在浏览器中打开 - 这部漫画有 %s 。要全部保存吗? + 这部漫画有 %s ,要全部保存吗? 保存 通知 新章节 @@ -126,9 +126,9 @@ 什么都没有… 试试换一个词再搜索。 看过的漫画将在这里显示 - 在<浏览>页面搜索要读的漫画 - 请先在线下载或进行本地导入 - 下载图源内容或通过本地文件导入。 + 在<浏览>页面搜索想读的漫画 + 存点什么吧 + 可下载在线图源里的漫画或导入本地漫画文件。 书架 最近 翻页动画 @@ -141,7 +141,7 @@ 目前分类为空 稍后阅读 更新内容 - 正在阅读漫画的新章节将在这里显示 + 在读漫画的新章节将在这里显示 搜索结果 新版本: %s 清除订阅更新记录 @@ -160,9 +160,9 @@ 关于 版本 %s 检查更新 - 无可用更新 + 已是最新版本 从右到左 - 新分类 + 添加新分类 显示模式 填充屏幕 适应高度 @@ -175,7 +175,7 @@ 恢复备份 恢复完成 清除订阅 - 要永久清除所有的更新历史吗? + 确定要永久清除所有的更新历史吗? 章节更新 倒序 登录 @@ -185,10 +185,10 @@ 输入密码以解锁 确认 密码必须大于或等于4个字符 - 要永久删除所有搜索记录吗? + 确定要永久清除所有搜索记录吗? 欢迎 备份已保存 - 不同设备导致不同的系统调度可能会杀掉本应用的后台任务。 + 不同设备及不同的系统调度可能会杀掉本应用的后台任务。 了解详情 等待 该章缺失 @@ -205,7 +205,7 @@ 页码 已用图源 可用图源 - 截图限制 + 阅读时截图限制 无限制 仅阅读成人内容时禁止 总是禁止截图 @@ -214,10 +214,10 @@ 开始阅读漫画,即可获取个性化推荐 禁止推荐成人漫画 启用 - 禁用 + 关闭 无法加载分类列表 重置筛选 - 选择想要阅读漫画的语言。可之后在设置中更改。 + 选择想要阅读漫画的语言,可之后在设置中更改。 仅连接 Wi-Fi 时 总是 页面预加载 @@ -225,7 +225,7 @@ 此漫画没有章节 外观 输入不希望在推荐中看到的分类 - 要从系统中永久删除所选项目吗? + 确定从系统中永久删除所选项目吗? 删除成功 限速下载 有助于避免封禁你的IP地址 @@ -244,16 +244,16 @@ 书签已删除 书签已添加 撤销 - 已从历史记录中删除 + 历史记录已删除 基于 HTTPS 的 DNS 默认阅读模式 自动检测阅读模式 自动检测是否应用条漫模式 - 禁用电池优化 + 关闭电池优化 有助于进行后台更新检查 - 出错了。请向开发人员提交错误报告以帮助修复问题。 + 出错了,请向开发人员提交错误报告以帮助修复问题。 发送 - 全部禁用 + 全部关闭 想读 休刊中 报告 @@ -269,12 +269,12 @@ 显示阅读进度 数据删除 标记为含有成人内容的漫画将不会添加到历史记录,也不会保存阅读记录 - 能对部分问题起到一些作用。所有网站的授权将会失效 + 可帮助稍微解决部分问题,所有网站的授权将会失效 显示全部 错误详情:<br><tt>%1$s</tt><br><br>1.尝试<a href=%2$s>在网络浏览器中打开漫画</a>以确保在其图源中可用<br>2.请确保使用的是<a href=kotatsu://about>最新版本的Kotatsu</a><br>3.若图源没有问题,请向开发人员发送错误报告。 无效域名 此处将显示你的漫画 - 在<浏览>页面搜索要读的漫画 + 在<浏览>页面搜索想读的漫画 %1$s%% 已取消 账号已存在 @@ -284,17 +284,17 @@ 输入邮箱地址以继续 已腰斩 选择范围 - 清除所有历史 + 清除所有历史记录 过去2小时 书签已删除 历史记录已清除 管理 暂无书签 可在阅读漫画时创建书签 - 没有图源 - 启用图源即可在线阅读漫画 + 暂无图源 + 开启一个图源即可在线阅读漫画 随机 - 确定要删除选定的分类吗? + 确定要删除选中的分类吗? \n该分类中的所有漫画将丢失且无法恢复。 重新排序 分类为空 @@ -315,7 +315,7 @@ 其他缓存 存储占用 可用 - 已从收藏中删除 + 收藏漫画已删除 选项 无痕模式 没有章节 @@ -325,8 +325,8 @@ 订阅 %s - %s 没有章节或已被删除 - 当使用鼠标或键盘时,向下导航更改为下一页。 - 简易控制 + 点击屏幕右侧边缘或按下右键都会翻到下一页 + 阅读简易操作 长按应用图标显示最近阅读的漫画 显示最近阅读漫画的快捷方式 重置 @@ -345,7 +345,7 @@ 同时清除新章节信息 服务器错误 (%1$d)。请稍后重试 列表 - 图源已禁用 + 图源已关闭 内容预加载 标为当前 语言 @@ -365,23 +365,23 @@ Mamimi Kanade 这里什么也没有 - 要记录阅读进度,在漫画详情中选中【菜单】→【进度记录】。 + 要记录阅读进度,在漫画详情页里选中【菜单】→【进度记录】。 允许更新不稳定版本 接收不稳定版本的更新通知 - 已开始下载 + 下载已开始 UserAgent 标识 - 要应用这些更改请重启程序 + 重启程序后更改 点击并长按项目排序 知道了 速度 导入先前创建的用户数据备份 在书架上显示 - 可选择一个或多个 .cbz 或 .zip 文件,每个文件都将识别为一个单独的漫画。 - 可选择一个包含压缩包或图片的文件夹。每个压缩包(或子文件夹)都会被识别为一个章节。 + 可选择一个或多个 cbz 或 zip 文件,每个文件都将识别为一个单独的漫画。 + 可选择一个包含压缩包或图片的文件夹,每个压缩包 (或子文件夹) 都会被识别为一个章节。 搜索相似漫画 翻译 WebView不可用:检查是否已安装WebView - 可使用自建同步服务器或默认同步服务器。若不知道有何用处请不要自行修改。 + 可使用自建同步服务器或默认同步服务器,若不知道有何用处请不要自行修改。 自动选择镜像网址 若存在可用的镜像网址,在出错时开始自动切换 已暂停 @@ -399,13 +399,13 @@ 暂无下载任务 下载已继续 下载已暂停 - 下载记录已全部清除 + 下载记录已清除 下载已取消 想要接收个性化的漫画推荐吗? 推荐:%s 偶尔显示漫画推荐通知 更多 - 将取消所有进行中的下载,部分下载完成的数据将会删除 + 将取消所有进行中的下载,部分已下载完成的数据将会丢失 所有已完成的下载记录将会永久清除 可登陆已有账号或创建新账号 地址 @@ -417,7 +417,7 @@ 从以前创建的备份恢复 在右下角显示页码 长按阅读按钮可显示更多选项 - 仅清除特定域名的 Cookies。大多数情况下会使网站授权失效 + 仅清除特定域名的 Cookies,大多数情况下会使网站授权失效 数据与隐私 在屏幕顶部显示当前时间和阅读进度 允许在条漫模式下使用缩放手势 @@ -447,10 +447,10 @@ 语音搜索 本月 语言 - %s 需要通过验证才能正常运行 + %s 需要通过人机身份验证才能正常运行 阅读进度 回传的数据无效或文件已损坏 - 显示相关漫画。可能并不准确或缺失 + 显示相关漫画,可能并不相关或没有相关漫画 使用移动网络时停止检查新章节 添加日期 本地 @@ -502,7 +502,7 @@ 备份保存路径 所有已翻译的章节 (%s) 即将推出 - 名称倒序 + 名称 (倒序) 管理图源 图源目录 美漫 @@ -510,14 +510,14 @@ 日漫 %1$s,%2$s 图源目录 - 已启用图源 + 图源已开启 成人 本次搜索未发现可用图源 - 此页面没有可用图源,或可能已添加所有可用图源。 + 此页面暂无可用图源,或可能已添加所有可用图源。 \n敬请期待后续更新 - 请选择需要开启的图源内容。可稍后在设置选项中设定 + 请选择需要开启的图源内容,可之后在设置中更改 网络同步 - 若遇到服务器端阻塞,可以在图源设置中为每个图源单独开启限速下载功能 + 若出现服务器阻塞的情况,可在图源设置中为每个图源单独开启限速下载功能 跳过 备份日期:%s 内容分级 @@ -526,7 +526,7 @@ R15 R18 锁定屏幕方向 - 作品详情页默认界面 + 漫画详情页默认界面 灰度 全局 此漫画 @@ -537,22 +537,22 @@ 已腰斩 手动 %1$d 个可用 - 禁用含有成人内容的图源并尽可能从列表中隐藏成人漫画 + 关闭含有成人内容的图源并尽可能从列表中隐藏成人漫画 x%.1f 此图源不支持同时按分类和区域筛选 此图源不支持同时按分类和状态筛选 开始输入分类名称 休刊中 - 降低内存占用(测试) + 降低内存占用 (测试) 降低当前画面外的页面质量以减少内存占用 - 可能帮助解决下载过程相关的问题 + 也许能帮助解决下载过程相关的问题 此图源不支持搜索 状态 此图源不支持按多个分类筛选 此图源不支持按多个状态筛选 关联 标记为已读 - 要将选定的漫画标记为已读吗? + 确定将选定的漫画标记为已读吗? \n \n警告: 当前的阅读进度将会丢失。 此分类已从主页隐藏,可通过菜单 → 管理分类来访问 @@ -578,14 +578,19 @@ 配置屏幕点按区域的操作 阅读操作 点按操作 - 在横屏时开启双页模式(测试) - 要恢复为默认设置吗?恢复后无法撤销。 + 横屏时开启双页模式 (测试) + 确定恢复为默认设置吗?恢复后无法撤销。 输入邮箱和密码以继续 全屏模式 条漫默认缩小值 将系统状态栏与通知栏隐藏 - 漫画推荐功能已被禁用 - 章节更新功能已被禁用 - 在作品详情页显示估计阅读时间 + 漫画推荐功能已被关闭 + 章节更新功能已被关闭 + 在漫画详情页显示估计阅读时间 估计阅读时间可能会不准确 + 显示主页底部导航栏名称 + 保存时总是询问图片保存目录 + 图片保存 + 图片默认保存目录 + 删除阅读历史 \ No newline at end of file From 9349eccc0c8645d3408c67ff6aeba6f90ab70353 Mon Sep 17 00:00:00 2001 From: Sergio Varela Date: Sat, 24 Feb 2024 00:02:08 +0100 Subject: [PATCH 05/39] Translated using Weblate (Spanish) Currently translated at 100.0% (596 of 596 strings) Co-authored-by: Sergio Varela Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/es/ Translation: Kotatsu/Strings --- app/src/main/res/values-es/strings.xml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index cdfdb8036..9a31abb36 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -328,7 +328,7 @@ Los ajustes de color elegidos serán recordados para este manga Fuente Mostrar los accesos directos a los mangas recientes - Tocando el borde derecho o pulsando la tecla derecha se pasa siempre a la página siguiente + Navegar a continuación siempre te lleva a la página siguiente cuando utilizas el ratón y el teclado. Control ergonómico del lector Corrección del color Brillo @@ -588,4 +588,9 @@ El valor estimado puede ser inexacto La búsqueda de nuevos capítulos está desactivada Sugerencias desactivadas + Mostrar etiquetas en la barra de navegación + Preguntar siempre por el directorio de destino + Eliminar del historial + Guardar páginas + Directorio predeterminado para guardar páginas \ No newline at end of file From 39c7ae31cd56dc93e4de74fe2a145aaa0258f4cc Mon Sep 17 00:00:00 2001 From: LaFouine-38 Date: Sat, 24 Feb 2024 00:02:08 +0100 Subject: [PATCH 06/39] Translated using Weblate (French) Currently translated at 92.6% (552 of 596 strings) Co-authored-by: LaFouine-38 Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/fr/ Translation: Kotatsu/Strings --- app/src/main/res/values-fr/strings.xml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 8cccf2c8c..337101ddc 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -578,4 +578,11 @@ Pages doubles Afficher le temps de lecture estimé Le temps estimé peut être inexact + Demande pour le répertoire de destination à chaque fois + Répertoire par défaut pour les pages sauvegardées + Retirer de l\'historique + Actions du lecteur + Cache la barre d\'état et les barres de nvigation + La fonctionnalité de suggestions est désactivée + La vérification des nouveaux chapitres est désactivée \ No newline at end of file From 7cfcaec6ddf8a9884fccb3edef76624d1201f174 Mon Sep 17 00:00:00 2001 From: Madaraki <115705267+Madaraki-chan@users.noreply.github.com> Date: Sat, 24 Feb 2024 00:02:08 +0100 Subject: [PATCH 07/39] Translated using Weblate (Russian) Currently translated at 100.0% (596 of 596 strings) Co-authored-by: Madaraki <115705267+Madaraki-chan@users.noreply.github.com> Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/ru/ Translation: Kotatsu/Strings --- app/src/main/res/values-ru/strings.xml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 83e8e5cfc..b9b57d987 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -588,4 +588,9 @@ Данное значение может быть неточным Проверка новых глав отключена Функция предложения отключена + Сохранение страниц + Спрашивать папку для сохранения каждый раз + Убрать из истории + Показывать подписи на панели навигации + Папка для сохранений по умолчанию \ No newline at end of file From bc56a94aa6cec49980cff6634adcacaaa74139b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=B5=D1=80=D0=B3=D1=96=D0=B9?= Date: Sat, 24 Feb 2024 00:02:08 +0100 Subject: [PATCH 08/39] Translated using Weblate (Ukrainian) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 100.0% (596 of 596 strings) Co-authored-by: Сергій Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/uk/ Translation: Kotatsu/Strings --- app/src/main/res/values-uk/strings.xml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index a32d022c7..f84d0833f 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -588,4 +588,9 @@ Це значення може бути неточним Перевірка нових глав вимкнена Функція пропозицій вимкнена + Збереження сторінок + Щоразу запитувати директорію призначення + Видалити з історії + Показувати мітки на панелі навігації + Директорія збереження сторінки за замовчуванням \ No newline at end of file From 9389015ab97bdd9a7c6c2c3d686580050e855d47 Mon Sep 17 00:00:00 2001 From: GpixeL Date: Sat, 24 Feb 2024 00:02:08 +0100 Subject: [PATCH 09/39] Translated using Weblate (Indonesian) Currently translated at 97.6% (582 of 596 strings) Co-authored-by: GpixeL Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/id/ Translation: Kotatsu/Strings --- app/src/main/res/values-in/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml index 45d058170..0701a68fa 100644 --- a/app/src/main/res/values-in/strings.xml +++ b/app/src/main/res/values-in/strings.xml @@ -107,7 +107,7 @@ Versi baru: %s Ukuran: %s Dibersihkan - Pembaruan + Perbarui Mencari pembaruan Jangan periksa Kata sandi salah From 61f775546538db0f546ec907813b5c2d3a22a0e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B0=D0=BA=D0=B0=D1=80=20=D0=A0=D0=B0=D0=B7=D0=B8?= =?UTF-8?q?=D0=BD?= Date: Sat, 24 Feb 2024 00:02:08 +0100 Subject: [PATCH 10/39] Translated using Weblate (Ukrainian) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 100.0% (596 of 596 strings) Translated using Weblate (Russian) Currently translated at 100.0% (596 of 596 strings) Translated using Weblate (Belarusian) Currently translated at 100.0% (596 of 596 strings) Translated using Weblate (Belarusian) Currently translated at 100.0% (596 of 596 strings) Co-authored-by: Макар Разин Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/be/ Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/ru/ Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/uk/ Translation: Kotatsu/Strings --- app/src/main/res/values-be/strings.xml | 7 ++++++- app/src/main/res/values-ru/strings.xml | 2 +- app/src/main/res/values-uk/strings.xml | 2 +- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/app/src/main/res/values-be/strings.xml b/app/src/main/res/values-be/strings.xml index 031697988..fc804ae43 100644 --- a/app/src/main/res/values-be/strings.xml +++ b/app/src/main/res/values-be/strings.xml @@ -313,7 +313,7 @@ Дэталі памылкі:<br><tt>%1$s</tt><br><br>1. Паспрабуйце <a href=%2$s>адкрыць мангу ў вэб-браўзеры</a>, каб пераканацца, што яна даступная ў крыніцы<br>2. Упэўніцеся, што вы выкарыстоўваеце <a href=kotatsu://about>апошнюю версію Kotatsu</a><br>3. Калі ён даступны, адпраўце распрацоўнікам справаздачу аб памылцы. Паказаць апошнія ярлыкі мангі Зрабіце нядаўнюю мангу даступнай, доўга націскаючы на значок праграмы - Навігацыя \"Далей\" заўсёды прыводзіць да наступнай старонцы пры выкарыстанні мышы і клавіятуры. + Націск на правы край або націск правай клавішы заўсёды перамыкае на наступную старонку. Эрганамічны упраўленне чытаннем Карэкцыя колеру Яркасць @@ -588,4 +588,9 @@ Праверка новых раздзелаў адключана Паказаць прыблізны час чытання Значэнне ацэнкі часу можа быць недакладным + Паказаць меткі на панэлі навігацыі + Кожны раз запытваць каталог прызначэння + Каталог захавання старонкі па змаўчанні + Выдаліць з гісторыі + Захаванне старонак \ No newline at end of file diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index b9b57d987..5c4e8b07f 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -327,7 +327,7 @@ Сведения об ошибке:<br><tt>%1$s</tt><br><br>1. Попробуйте <a href=%2$s>открыть мангу в веб-браузере</a>, чтобы убедиться, что она доступна в источнике<br>2. Убедитесь, что вы используете <a href=kotatsu://about>последнюю версию Kotatsu</a><br>3. Если возможно, отправьте отчёт об ошибке разработчикам. Показывать ярлыки последней прочитанной манги Сделать недавно прочитанную мангу доступной по долгому нажатию на иконку приложения - Навигация «Далее» всегда приводит к следующей странице при использовании мыши и клавиатуры. + Нажатие на правый край или нажатие правой клавиши всегда переключает на следующую страницу. Эргономичное управление режимом чтения Сбросить Отклонить diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index f84d0833f..73afd7678 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -327,7 +327,7 @@ Деталі помилки:<br><tt>%1$s</tt><br><br>1. Спробуйте <a href=%2$s>відкрити манґу у веб-браузері</a>, щоб переконатися, що вона доступна в джерелі<br>2. Переконайтеся, що ви використовуєте <a href=kotatsu://about>останню версію Kotatsu</a><br>3. Якщо він доступний, надішліть звіт про помилку розробникам. Показувати ярлики останньої прочитаної манґи Зробити нещодавно прочитану манґу доступною за довгим натисканням на іконку застосунку - Навігація «Далі» завжди веде до наступної сторінки під час використання миші та клавіатури. + Натискання на правий край або натискання правої клавіші завжди перемикається на наступну сторінку. Ергономічне керування режимом читання Яскравість Корекція кольору From 7ab3c75232b5e8ee432c8ea33f16889635e12dfa Mon Sep 17 00:00:00 2001 From: Infy's Tagalog Translations Date: Sat, 24 Feb 2024 00:02:08 +0100 Subject: [PATCH 11/39] Translated using Weblate (Filipino) Currently translated at 100.0% (596 of 596 strings) Translated using Weblate (Filipino) Currently translated at 100.0% (9 of 9 strings) Co-authored-by: Infy's Tagalog Translations Translate-URL: https://hosted.weblate.org/projects/kotatsu/plurals/fil/ Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/fil/ Translation: Kotatsu/Strings Translation: Kotatsu/plurals --- app/src/main/res/values-fil/plurals.xml | 62 +++++++++++++++---------- app/src/main/res/values-fil/strings.xml | 46 ++++++++++++++++-- 2 files changed, 78 insertions(+), 30 deletions(-) diff --git a/app/src/main/res/values-fil/plurals.xml b/app/src/main/res/values-fil/plurals.xml index 92ac9c5dc..579f13adc 100644 --- a/app/src/main/res/values-fil/plurals.xml +++ b/app/src/main/res/values-fil/plurals.xml @@ -1,27 +1,39 @@ - - %1$d aytem - %1$d (na) aytem - - - %1$d minutong nakakalipas - %1$d (na) minutong nakakalipas - - - %1$d bagong kabanata - %1$d mga bagong kabanata - - - "%1$d kabanata" - %1$d (na) kabanata - - - %1$d oras ang nakalipas - %1$d (na) oras ang nakalipas - - - %1$d araw ang nakalipas - %1$d (na) araw ang nakalipas - - + + %1$d aytem + %1$d (na) aytem + + + %1$d minutong nakakalipas + %1$d (na) minutong nakakalipas + + + %1$d bagong kabanata + %1$d mga bagong kabanata + + + "%1$d kabanata" + %1$d (na) kabanata + + + %1$d oras ang nakalipas + %1$d (na) oras ang nakalipas + + + %1$d araw ang nakalipas + %1$d (na) araw ang nakalipas + + + %1$d buwan nakakalipas + %1$d (na) buwan nakakalipas + + + %1$d oras + %1$d (na) oras + + + %1$d minuto + %1$d (na) minuto + + \ No newline at end of file diff --git a/app/src/main/res/values-fil/strings.xml b/app/src/main/res/values-fil/strings.xml index 731a8547d..950153174 100644 --- a/app/src/main/res/values-fil/strings.xml +++ b/app/src/main/res/values-fil/strings.xml @@ -346,7 +346,7 @@ Makakuha ng paunawa tungkol sa mga unstable build Hindi magagamit ang network I-on ang Wi-Fi o mobile network para magbasa ng manga online - Mag-tap sa kanang gilid o ang pagpindot sa kanang key ay palaging lilipat sa susunod na pahina + Ang susunod na pag-navigate ay palaging magdadala sa iyo sa susunod na pahina kapag gumagamit ng mouse at keyboard. Ipakita ang slider ng paglipat ng pahina Mga detalye ng error:<br><tt>%1$s</tt><br><br>1. Subukang <a href=%2$s>magbukas ng manga sa isang web browser</a> upang matiyak na available ito sa souce<br>2. Tiyaking ginagamit mo ang <a href=kotatsu://about>pinakabagong bersyon ng Kotatsu</a><br>3. Kung available ito, magpadala ng ulat ng error sa mga developer. Paganahin ang pag-log @@ -377,7 +377,7 @@ Ipakita sa Istante Bilis Maaari kang pumili ng isa o higit pang .cbz o .zip file, ang bawat file ay makikilala bilang isang hiwalay na manga. - Maaari kang pumili ng isang directory na may mga archive o mga larawan. Ang bawat archive (o subdirectory) ay makikilala bilang isang kabanata. + Maaari kang pumili ng isang direktoryo na may mga archive o mga larawan. Ang bawat archive (o subdirectory) ay makikilala bilang isang kabanata. Maghanap ng katulad Maaari kang mag-sign in sa isang umiiral na account o lumikha ng bago Mga pagsasalin @@ -438,7 +438,7 @@ Manu-manong pumili ng mga kabanata Baliktarin ang mga kulay Custom na direktoryo - Pumili ng Custom na direktoryo + Pumili ng custom na direktoryo Wala kang access sa file o direktoryo na ito Mga lokal na direktoryo ng manga Password @@ -478,7 +478,7 @@ Sa device Nailipat sa itaas Wala nang mga aytem na pwedeng idagdag - Mga Directory + Mga direktoryo Ipakita ang mga button ng pag-zoom Mga pangunahing seksyon ng screen Mag-zoom palabas @@ -502,7 +502,7 @@ Mga periodic na pag-backup Dalawang beses bawat buwan Isang beses bawat buwan - Output directory ng mga backup + Output na direktoryo sa mga backup Huling matagumpay na pag-backup: %s x%.1f Katalugo ng mga source @@ -557,4 +557,40 @@ \n \nBabala: mawawala ang kasalukuyang progress sa pagbabasa. Nakatago ang kategoryang ito mula sa pangunahing screen at naa-access sa pamamagitan ng Menu → Ayusin ang mga kategorya + Alisin sa kasaysayan + Hindi mase-save ang iyong progress sa pagbabasa + Huling nabasa + Default zoom out sa webtoon + Ipakita ang mga label sa navigation bar + Nagse-save ng mga pahina + Laging magtanong sa direktoryo ng patutunguhan + Default na direktoryo ng pag-save ng pahina + Ilagay ang iyong email at password upang magpatuloy + %1$s %2$s + Volume %d + Hindi kilalang volume + Tinatayang natitirang oras + Patayo + Ipakita ang menu + Aksyon sa pag-tap + Aksyon sa matagal na pag-tap + Wala + I-reset ang mga setting sa mga default na value? Ang gawaing ito ay hindi pwedeng bawiin. + Gumamit ng dalawang page na layout sa landscape na oryentasyon (beta) + Fullscreen mode + Itago ang status ng system at mga navigation bar + Dalawang pahina + Ipakita/itago ang UI + Nakaraang kabanata + Sunod na kabanata + Nakaraang pahina + Susunod na pahina + Mga aksyon sa reader + Ayusin ang mga pagkilos para sa mga nata-tap na lugar ng screen + Paganahin ang mga volume button + Gumamit ng mga volume button para sa paglipat ng mga pahina + Naka-disable ang feature na Mga suhestiyon + Naka-disable ang pagsuri para sa mga bagong kabanata + Ipakita ang tinantyang oras ng pagbabasa + Maaaring hindi tumpak ang halaga ng pagtatantya ng oras \ No newline at end of file From 2b3b406b84554b21deba9dc78a09f9f896dd2b16 Mon Sep 17 00:00:00 2001 From: Naga Date: Sat, 24 Feb 2024 00:02:08 +0100 Subject: [PATCH 12/39] Translated using Weblate (French) Currently translated at 100.0% (596 of 596 strings) Translated using Weblate (French) Currently translated at 100.0% (9 of 9 strings) Translated using Weblate (French) Currently translated at 99.4% (593 of 596 strings) Co-authored-by: Naga Translate-URL: https://hosted.weblate.org/projects/kotatsu/plurals/fr/ Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/fr/ Translation: Kotatsu/Strings Translation: Kotatsu/plurals --- app/src/main/res/values-fr/plurals.xml | 12 ++++++------ app/src/main/res/values-fr/strings.xml | 26 +++++++++++++++++--------- 2 files changed, 23 insertions(+), 15 deletions(-) diff --git a/app/src/main/res/values-fr/plurals.xml b/app/src/main/res/values-fr/plurals.xml index 01a6bc0f5..04234f550 100644 --- a/app/src/main/res/values-fr/plurals.xml +++ b/app/src/main/res/values-fr/plurals.xml @@ -36,13 +36,13 @@ Il y a %1$d mois - heure - heures - heures + %1$d heure + %1$d heures + %1$d heures - minute - minutes - minutes + %1$d minute + %1$d minutes + %1$d minutes \ No newline at end of file diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 337101ddc..acfedc563 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -66,7 +66,7 @@ Taille : %s Nouvelle version : %s Résultats de la recherche - Les nouveaux chapitres de ce que vous lisez sont présentés ici + Les nouveaux chapitres de ce que vous lisez sont affichés ici Mises à jour Lire plus tard Catégorie vide @@ -328,7 +328,7 @@ Sauvegarde ou abandon des modifications non sauvegardées \? Abandonner Rendre les mangas récents disponibles en appuyant longuement sur l\'icône de l\'application - Taper sur le bord droit ou appuyer sur la touche droite permet toujours de passer à la page suivante + Taper sur le bord droit ou appuyer sur la touche droite permet toujours de passer à la page suivante. Contrôle ergonomique du lecteur Afficher les raccourcis des mangas récents Correction des couleurs @@ -424,7 +424,7 @@ Autorisation (optionnel) Numéro de port invalide Restaurer la sauvegarde précédemment créée - Autoriser le geste de zoom avant en mode webtoon + Autoriser le geste de zoom en mode webtoon Afficher l\'heure actuelle et la progression de la lecture en haut de l\'écran Animation de tournage de page Appuyez et maintenez le bouton Lire pour voir plus d\'options @@ -543,8 +543,8 @@ Ce manga Appliqué Commence a écrit un nom de genre - Vous pouvez activer la vitesse de téléchargement réduite individuellement pour chaque source de manga dans les paramètres si vous rencontrez des problèmes de bloquage avec le serveur. - Date de sauvegarde: %s + Vous pouvez réduire la vitesse de téléchargement individuellement pour chaque source de manga dans les paramètres si vous rencontrez des problèmes de blocage avec le serveur + Date de sauvegarde : %s Nom inversé Marquer comme terminé Marquer le manga sélectionné comme terminé ? @@ -570,19 +570,27 @@ Activer les boutons de volume Utiliser les boutons de volume pour changer de page Aucun - Revenir aux paramètres par défaut ? -\nCette action ne pourra pas être annulée. + Revenir aux paramètres par défaut ? Cette action ne pourra pas être annulée. Utiliser la disposition pages doubles en orientation paysage (bêta) Mode plein écran Cette catégorie a été cachée du menu principal et est accessible via Menu → Gérer les catégories Pages doubles Afficher le temps de lecture estimé Le temps estimé peut être inexact - Demande pour le répertoire de destination à chaque fois + Demander pour le répertoire de destination à chaque fois Répertoire par défaut pour les pages sauvegardées Retirer de l\'historique Actions du lecteur - Cache la barre d\'état et les barres de nvigation + Cache la barre d\'état et les barres de navigations La fonctionnalité de suggestions est désactivée La vérification des nouveaux chapitres est désactivée + Suggestif + Peut aider à démarrer le téléchargement si vous avez des problèmes avec + %1$s %2$s + Configurer les actions pour les zones d’écran tactiles + Action de tapoter + Action d\'appuyez longuement + Afficher les étiquettes dans la barre de navigation + Sauvegarder les pages + Zoom webtoon par défaut \ No newline at end of file From 04868488cccca97fb9a842db2fded2bd593e5a77 Mon Sep 17 00:00:00 2001 From: Alex Georgiou Date: Sat, 24 Feb 2024 00:02:09 +0100 Subject: [PATCH 13/39] Translated using Weblate (English) Currently translated at 100.0% (596 of 596 strings) Co-authored-by: Alex Georgiou Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/en/ Translation: Kotatsu/Strings --- app/src/main/res/values/strings.xml | 1194 +++++++++++++-------------- 1 file changed, 597 insertions(+), 597 deletions(-) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 639bfbc4e..aec0351ba 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,601 +1,601 @@ - Kotatsu - Local storage - Favourites - History - An error occurred - Network error - Details - Chapters - List - Detailed list - Grid - List mode - Settings - Manga sources - Loading… - Computing… - Chapter %1$d of %2$d - Close - Try again - Clear history - Nothing found - No history yet - Read - No favourites yet - Favourite this - New category - Add - Save - Share - Create shortcut… - Share %s - Search - Search manga - Downloading… - Processing… - Downloaded - Downloads - Name - Popular - Updated - Newest - Rating - Sorting order - Filter - Theme - Light - Dark - + Kotatsu + Local storage + Favourites + History + An error occurred + Network error + Details + Chapters + List + Detailed list + Grid + List mode + Settings + Manga sources + Loading… + Computing… + Chapter %1$d of %2$d + Close + Try again + Clear history + Nothing found + No history yet + Read + No favourites yet + Favourite this + New category + Add + Save + Share + Create shortcut… + Share %s + Search + Search manga + Downloading… + Processing… + Downloaded + Downloads + Name + Popular + Updated + Newest + Rating + Sorting order + Filter + Theme + Light + Dark + Follow system - Pages - Clear - Clear all reading history permanently? - Remove - \"%s\" deleted from local storage - Save page - Saved - Share image - Import - Delete - This operation is not supported - Either pick a ZIP or CBZ file. - No description - Clear page cache - B|kB|MB|GB|TB - Standard - Webtoon - Read mode - Grid size - Search on %s - Delete manga - Permanently delete \"%s\" from device? - Reader settings - Switch pages - Edge taps - Volume buttons - Continue - Error - Clear thumbnails cache - Clear search history - Cleared - Gestures only - Internal storage - External storage - Domain - A new version of the app is available - Open in web browser - This manga has %s. Save all of it? - Save - Notifications - %1$d of %2$d on - New chapters - Download - Notifications settings - Notification sound - LED indicator - Vibration - Favourite categories - Remove - It\'s kind of empty here… - Try to reformulate the query. - What you read will be displayed here - Find what to read in the «Explore» section - Your manga will be displayed here - Find what to read in the «Explore» section - Save something first - Save something from an online catalog or import it from a file. - Shelf - Recent - Page animation - Downloads folder - Not available - No available storage - Other storage - Done - All favourites - Empty category - Read later - Updates - New chapters of what you are reading are shown here - Search results - New version: %s - Size: %s - Clear updates feed - Cleared - Rotate screen - Update - Feed update will start soon - Look for updates - Don\'t check - Enter password - Wrong password - Protect the app - Ask for password when starting Kotatsu - Repeat the password - Mismatching passwords - About - Version %s - Check for updates - No updates available - Right-to-left - New category - Scale mode - Fit center - Fit to height - Fit to width - Keep at start - Black - Uses less power on AMOLED screens - Backup and restore - Create data backup - Restore from backup - Restored - Preparing… - File not found - All data was restored - The data was restored, but there are errors - You can create backup of your history and favourites and restore it - Just now - Yesterday - Long ago - Group - Today - Tap to try again - The chosen configuration will be remembered for this manga - Silent - CAPTCHA required - Solve - Clear cookies - All cookies were removed - Clear feed - Clear all update history permanently? - Check for new chapters - Reverse - Sign in - Sign in to view this content - Default: %s - Next - Enter a password to start the app with - Confirm - The password must be 4 characters or more - Remove all recent search queries permanently? - Welcome - Backup saved - Some devices have different system behavior, which may break background tasks. - Read more - Queued - The chapter is missing - Translate this app - Translation - Authorized - Logging in on %s is not supported - You will be logged out from all sources - Genres - Finished - Ongoing - Default - Exclude NSFW manga from history - Numbered pages - Used sources - Available sources - Screenshot policy - Allow - Block on NSFW - Always block - Suggestions - Enable suggestions - Suggest manga based on your preferences - All data is only analyzed locally on this device and never sent anywhere. - Start reading manga and you will get personalized suggestions - Do not suggest NSFW manga - Enabled - Disabled - Unable to load genres list - Reset filter - Select languages which you want to read manga. You can change it later in settings. - Never - Only on Wi-Fi - Always - Preload pages - Logged in as %s - 18+ - Various languages - Find chapter - No chapters in this manga - %1$s%% - Appearance - Suggestions updating - Exclude genres - Specify genres that you do not want to see in the suggestions - Delete selected items from device permanently? - Removal completed - Shikimori - AniList - Download slowdown - Helps avoid blocking your IP address - Saved manga processing - Chapters will be removed in the background - Canceled - Account already exists - Back - Synchronization - Sync your data - Enter your email to continue - Hide - New manga sources are available - Check for new chapters and notify about it - You will receive notifications about updates of manga you are reading - You will not receive notifications but new chapters will be highlighted in the lists - Enable notifications - Name - Edit - Edit category - Tracking - No favourite categories - Log out - Add bookmark - Remove bookmark - Bookmarks - Bookmark removed - Bookmark added - Undo - Removed from history - DNS over HTTPS - Default mode - Autodetect reader mode - Automatically detect if manga is webtoon - Disable battery optimization - Helps with background updates checks - Something went wrong. Please submit a bug report to the developers to help us fix it. - Send - Planned - Reading - Re-reading - Completed - On hold - Dropped - Disable all - Use fingerprint if available - Manga from your favourites - Your recently read manga - Report - Show reading progress indicators - Data deletion - Show percentage read in history and favourites - Manga marked as NSFW will never be added to the history and your progress will not be saved - Can help in case of some issues. All authorizations will be invalidated - Show all - Invalid domain - Select range - Clear all history - Last 2 hours - History cleared - Manage - No bookmarks yet - You can create bookmark while reading manga - Bookmarks removed - No manga sources - Enable manga sources to read manga online - Random - Are you sure you want to delete the selected favorite categories?\nAll manga in it will be lost and this cannot be undone. - Reorder - Empty - Explore - Press "Back" again to exit - Press "Back" twice to exit the app - Exit confirmation - Saved manga - Pages cache - Other cache - Storage usage - Available - %s - %s - Removed from favourites - Options - Content not found or removed - %1$s · %2$s - Incognito mode - No chapters - Automatic scroll - Ch. %1$d/%2$d Pg. %3$d/%4$d - Show information bar in reader - Comics archive - Folder with images - Importing manga - Import completed - You can delete the original file from storage to save space - Import will start soon - Feed - Error details:<br><tt>%1$s</tt><br><br>1. Try to <a href="%2$s">open manga in a web browser</a> to ensure it is available on its source<br>2. Make sure you are using the <a href="kotatsu://about">latest version of Kotatsu</a><br>3. If it is available, send an error report to the developers. - Show recent manga shortcuts - Make recent manga available by long pressing on application icon - Navigating next always takes you to the next page when using mouse and keyboard. - Ergonomic reader control - Color correction - Brightness - Contrast - Reset - The chosen color settings will be remembered for this manga - Save or discard unsaved changes\? - Discard - No space left on device - Show page switching slider - Webtoon zoom - Different languages - Network is not available - Turn on Wi-Fi or mobile network to read manga online - Server side error (%1$d). Please try again later - Also clear information about new chapters - Compact - MyAnimeList - Source disabled - Content preloading - Mark as current - Language - Share logs - Enable logging - Record some actions for debug purposes. Don\'t turn it on if you\'re not sure what you\'re doing - Show suspicious content - Dynamic - Color scheme - Show in grid view - Miku - Asuka - Mion - Rikka - Sakura - Mamimi - Kanade - There is nothing here - To track reading progress, select Menu → Track on the manga details screen. - Services - Allow unstable updates - Receive notifications about unstable builds - Download started - Got it - Tap and hold on an item to reorder them - UserAgent header - Please restart the application to apply these changes - You can select one or more .cbz or .zip files, each file will be recognized as a separate manga. - You can select a directory with archives or images. Each archive (or subdirectory) will be recognized as a chapter. - Speed - Import a previously created backup of user data - Show on the Shelf - You can sign in into an existing account or create a new one - Find similar - Synchronization settings - Server address - You can use a self-hosted synchronization server or a default one. Don\'t change this if you\'re not sure what you\'re doing. - Ignore SSL errors - Choose mirror automatically - Automatically switch domains for manga sources on errors if mirrors are available - Pause - Resume - Paused - + Pages + Clear + Clear all reading history permanently? + Remove + \"%s\" deleted from local storage + Save page + Saved + Share image + Import + Delete + This operation is not supported + Either pick a ZIP or CBZ file. + No description + Clear page cache + B|kB|MB|GB|TB + Standard + Webtoon + Read mode + Grid size + Search on %s + Delete manga + Permanently delete \"%s\" from device? + Reader settings + Switch pages + Edge taps + Volume buttons + Continue + Error + Clear thumbnails cache + Clear search history + Cleared + Gestures only + Internal storage + External storage + Domain + A new version of the app is available + Open in web browser + This manga has %s. Save all of it? + Save + Notifications + %1$d of %2$d on + New chapters + Download + Notifications settings + Notification sound + LED indicator + Vibration + Favourite categories + Remove + It\'s kind of empty here… + Try to reformulate the query. + What you read will be displayed here + Find what to read in the «Explore» section + Your manga will be displayed here + Find what to read in the «Explore» section + Save something first + Save something from an online catalog or import it from a file. + Shelf + Recent + Page animation + Downloads folder + Not available + No available storage + Other storage + Done + All favourites + Empty category + Read later + Updates + New chapters of what you are reading are shown here + Search results + New version: %s + Size: %s + Clear updates feed + Cleared + Rotate screen + Update + Feed update will start soon + Look for updates + Don\'t check + Enter password + Wrong password + Protect the app + Ask for password when starting Kotatsu + Repeat the password + Mismatching passwords + About + Version %s + Check for updates + No updates available + Right-to-left + New category + Scale mode + Fit center + Fit to height + Fit to width + Keep at start + Black + Uses less power on AMOLED screens + Backup and restore + Create data backup + Restore from backup + Restored + Preparing… + File not found + All data was restored + The data was restored, but there are errors + You can create backup of your history and favourites and restore it + Just now + Yesterday + Long ago + Group + Today + Tap to try again + The chosen configuration will be remembered for this manga + Silent + CAPTCHA required + Solve + Clear cookies + All cookies were removed + Clear feed + Clear all update history permanently? + Check for new chapters + Reverse + Sign in + Sign in to view this content + Default: %s + Next + Enter a password to start the app with + Confirm + The password must be 4 characters or more + Remove all recent search queries permanently? + Welcome + Backup saved + Some devices have different system behavior, which may break background tasks. + Read more + Queued + The chapter is missing + Translate this app + Translation + Authorized + Logging in on %s is not supported + You will be logged out from all sources + Genres + Finished + Ongoing + Default + Exclude NSFW manga from history + Numbered pages + Used sources + Available sources + Screenshot policy + Allow + Block on NSFW + Always block + Suggestions + Enable suggestions + Suggest manga based on your preferences + All data is only analyzed locally on this device and never sent anywhere. + Start reading manga and you will get personalized suggestions + Do not suggest NSFW manga + Enabled + Disabled + Unable to load genres list + Reset filter + Select languages which you want to read manga. You can change it later in settings. + Never + Only on Wi-Fi + Always + Preload pages + Logged in as %s + 18+ + Various languages + Find chapter + No chapters in this manga + %1$s%% + Appearance + Suggestions updating + Exclude genres + Specify genres that you do not want to see in the suggestions + Delete selected items from device permanently? + Removal completed + Shikimori + AniList + Download slowdown + Helps avoid blocking your IP address + Saved manga processing + Chapters will be removed in the background + Canceled + Account already exists + Back + Synchronization + Sync your data + Enter your email to continue + Hide + New manga sources are available + Check for new chapters and notify about it + You will receive notifications about updates of manga you are reading + You will not receive notifications but new chapters will be highlighted in the lists + Enable notifications + Name + Edit + Edit category + Tracking + No favourite categories + Log out + Add bookmark + Remove bookmark + Bookmarks + Bookmark removed + Bookmark added + Undo + Removed from history + DNS over HTTPS + Default mode + Autodetect reader mode + Automatically detect if manga is webtoon + Disable battery optimization + Helps with background updates checks + Something went wrong. Please submit a bug report to the developers to help us fix it. + Send + Planned + Reading + Re-reading + Completed + On hold + Dropped + Disable all + Use fingerprint if available + Manga from your favourites + Your recently read manga + Report + Show reading progress indicators + Data deletion + Show percentage read in history and favourites + Manga marked as NSFW will never be added to the history and your progress will not be saved + Can help in case of some issues. All authorizations will be invalidated + Show all + Invalid domain + Select range + Clear all history + Last 2 hours + History cleared + Manage + No bookmarks yet + You can create bookmark while reading manga + Bookmarks removed + No manga sources + Enable manga sources to read manga online + Random + Are you sure you want to delete the selected favorite categories?\nAll manga in it will be lost and this cannot be undone. + Reorder + Empty + Explore + Press "Back" again to exit + Press "Back" twice to exit the app + Exit confirmation + Saved manga + Pages cache + Other cache + Storage usage + Available + %s - %s + Removed from favourites + Options + Content not found or removed + %1$s · %2$s + Incognito mode + No chapters + Automatic scroll + Ch. %1$d/%2$d Pg. %3$d/%4$d + Show information bar in reader + Comics archive + Folder with images + Importing manga + Import completed + You can delete the original file from storage to save space + Import will start soon + Feed + Error details:<br><tt>%1$s</tt><br><br>1. Try to <a href="%2$s">open manga in a web browser</a> to ensure it is available on its source<br>2. Make sure you are using the <a href="kotatsu://about">latest version of Kotatsu</a><br>3. If it is available, send an error report to the developers. + Show recent manga shortcuts + Make recent manga available by long pressing on application icon + Tapping on the right edge, or pressing the right key, always switches to the next page + Ergonomic reader control + Color correction + Brightness + Contrast + Reset + The chosen color settings will be remembered for this manga + Save or discard unsaved changes\? + Discard + No space left on device + Show page switching slider + Webtoon zoom + Different languages + Network is not available + Turn on Wi-Fi or mobile network to read manga online + Server side error (%1$d). Please try again later + Also clear information about new chapters + Compact + MyAnimeList + Source disabled + Content preloading + Mark as current + Language + Share logs + Enable logging + Record some actions for debug purposes. Don\'t turn it on if you\'re not sure what you\'re doing + Show suspicious content + Dynamic + Color scheme + Show in grid view + Miku + Asuka + Mion + Rikka + Sakura + Mamimi + Kanade + There is nothing here + To track reading progress, select Menu → Track on the manga details screen. + Services + Allow unstable updates + Receive notifications about unstable builds + Download started + Got it + Tap and hold on an item to reorder them + UserAgent header + Please restart the application to apply these changes + You can select one or more .cbz or .zip files, each file will be recognized as a separate manga. + You can select a directory with archives or images. Each archive (or subdirectory) will be recognized as a chapter. + Speed + Import a previously created backup of user data + Show on the Shelf + You can sign in into an existing account or create a new one + Find similar + Synchronization settings + Server address + You can use a self-hosted synchronization server or a default one. Don\'t change this if you\'re not sure what you\'re doing. + Ignore SSL errors + Choose mirror automatically + Automatically switch domains for manga sources on errors if mirrors are available + Pause + Resume + Paused + Remove completed - Cancel all - Download only via Wi-Fi - Stop downloading when switching to a mobile network - Suggestion: %s - Sometimes show notifications with suggested manga - More - Enable - No thanks - All active downloads will be cancelled, partially downloaded data will be lost - Your downloads history will be permanently deleted - You don\'t have any downloads - Downloads have been resumed - Downloads have been paused - Downloads have been removed - Downloads have been cancelled - Do you want to receive personalized manga suggestions? - Translations - WebView not available: check if WebView provider is installed - Clear network cache - Type - Address - Port - Proxy - Invalid value - Kitsu - Enter your email and password to continue - %1$s (%2$s) - Downloaded - Images optimization proxy - Use the wsrv.nl service to reduce traffic usage and speed up image loading if possible - Invert colors - Username - Password - Authorization (optional) - Invalid port number - Network - Data and privacy - Restore previously created backup - Allow zoom in gesture in webtoon mode - Show the current time and reading progress at the top of the screen - Show page numbers in bottom corner - Animate page switching - Press and hold the Read button to see more options - Clear cookies for specified domain only. In most cases will invalidate authorization - All chapters with translation %s - The whole manga - First %s - Next unread %s - All unread chapters - All unread chapters (%s) - Select chapters manually - Custom directory - Pick custom directory - You have no access to this file or directory - Local manga directories - Description - This month - Voice search - Related manga - Light - Dark - White - Black - Background - Data was not restored - Make sure you have selected the correct backup file - Manage categories - Do not update suggestions using metered network connections - Do not check for new chapters using metered network connections - Enter manga title, genre or source name - Progress - Added - View list - Show - %s requires a captcha to be resolved to work properly - Languages - Unknown - In progress - Disable NSFW - Too many requests. Try again later - Show a list of related manga. In some cases it may be inaccurate or missing - Advanced - Default section - Manga list - Invalid data is returned or file is corrupted - On device - Directories - Main screen sections - No more items can be added - To top - Moved to top - Zoom out - Zoom in - Show zoom buttons - Whether to show zoom control buttons in the bottom right corner - Keep screen on - Do not turn the screen off while you\'re reading manga - Dropped - Reduces banding, but may impact performance - 32-bit color mode - Suggest new sources after app update - Prompt to enable newly added sources after updating the application - List options - Relevance - Categories - Online variant - Periodic backups - Backup creation frequency - Every day - Every 2 days - Once per week - Twice per month - Once per month - Enable periodic backups - Backups output directory - Last successful backup: %s - x%.1f - Lock screen rotation - Manga - Hentai - Comics - Other - %1$s, %2$s - Sources catalog - Source enabled - There are no sources available in this section, or all of it might have been already added.\nStay tuned - No available manga sources found by your query - Catalog - Manage sources - Manual - Available: %1$d - Disable NSFW sources and hide adult manga from list if possible - Paused - Reduce memory consumption (beta) - Reduce offscreen pages quality to use less memory - State - Filtering by multiple genres is not supported by this manga source - Filtering by multiple states is not supported by this manga source - Search is not supported by this manga source - You can enable download slowdown for each manga source individually in the source settings if you are having problems with server-side blocking - Skip - Grayscale - Globally - This manga - These settings can be applied globally or only to the current manga. If applied globally, individual settings will not be overridden. - Apply - Filtering by both genres and locale is not supported by this source - Filtering by both genres and states is not supported by this source - Start typing the genre name - Might help with getting the download started if you have any issues with it - Please select which content sources you would like to enable. This can also be configured later in settings - Login to sync account - Restore - Backup date: %s - Upcoming - Name reversed - Content rating - Exclude genres - Safe - Suggestive - Adult - Default tab - Mark as completed - Mark selected manga as completely read?\n\nWarning: current reading progress will be lost. - This category was hidden from the main screen and is accessible through Menu → Manage categories - Approximate reading time - Approximate remaining time - %1$s %2$s - Volume %d - Unknown volume - Your reading progress will not be saved - Vertical - Last read - Two pages - Show menu - Show/hide UI - Previous chapter - Next chapter - Previous page - Next page - Reader actions - Configure actions for tappable screen areas - Enable volume buttons - Use volume buttons for switching pages - Tap action - Long tap action - None - Reset settings to default values? This action cannot be undone. - Use two pages layout on landscape orientation (beta) - Default webtoon zoom out - Fullscreen mode - Hide system status and navigation bars - %1$d/%2$d - Show estimated reading time - The time estimation value may be inaccurate - Suggestions feature is disabled - Checking for new chapters is disabled - Show labels in navigation bar - Saving pages - Ask for the destination dir every time - Default page save directory - Remove from history - + Cancel all + Download only via Wi-Fi + Stop downloading when switching to a mobile network + Suggestion: %s + Sometimes show notifications with suggested manga + More + Enable + No thanks + All active downloads will be cancelled, partially downloaded data will be lost + Your downloads history will be permanently deleted + You don\'t have any downloads + Downloads have been resumed + Downloads have been paused + Downloads have been removed + Downloads have been cancelled + Do you want to receive personalized manga suggestions? + Translations + WebView not available: check if WebView provider is installed + Clear network cache + Type + Address + Port + Proxy + Invalid value + Kitsu + Enter your email and password to continue + %1$s (%2$s) + Downloaded + Images optimization proxy + Use the wsrv.nl service to reduce traffic usage and speed up image loading if possible + Invert colors + Username + Password + Authorization (optional) + Invalid port number + Network + Data and privacy + Restore previously created backup + Allow zoom in gesture in webtoon mode + Show the current time and reading progress at the top of the screen + Show page numbers in bottom corner + Animate page switching + Press and hold the Read button to see more options + Clear cookies for specified domain only. In most cases will invalidate authorization + All chapters with translation %s + The whole manga + First %s + Next unread %s + All unread chapters + All unread chapters (%s) + Select chapters manually + Custom directory + Pick custom directory + You have no access to this file or directory + Local manga directories + Description + This month + Voice search + Related manga + Light + Dark + White + Black + Background + Data was not restored + Make sure you have selected the correct backup file + Manage categories + Do not update suggestions using metered network connections + Do not check for new chapters using metered network connections + Enter manga title, genre or source name + Progress + Added + View list + Show + %s requires a captcha to be resolved to work properly + Languages + Unknown + In progress + Disable NSFW + Too many requests. Try again later + Show a list of related manga. In some cases it may be inaccurate or missing + Advanced + Default section + Manga list + Invalid data is returned or file is corrupted + On device + Directories + Main screen sections + No more items can be added + To top + Moved to top + Zoom out + Zoom in + Show zoom buttons + Whether to show zoom control buttons in the bottom right corner + Keep screen on + Do not turn the screen off while you\'re reading manga + Dropped + Reduces banding, but may impact performance + 32-bit color mode + Suggest new sources after app update + Prompt to enable newly added sources after updating the application + List options + Relevance + Categories + Online variant + Periodic backups + Backup creation frequency + Every day + Every 2 days + Once per week + Twice per month + Once per month + Enable periodic backups + Backups output directory + Last successful backup: %s + x%.1f + Lock screen rotation + Manga + Hentai + Comics + Other + %1$s, %2$s + Sources catalog + Source enabled + There are no sources available in this section, or all of it might have been already added.\nStay tuned + No available manga sources found by your query + Catalog + Manage sources + Manual + Available: %1$d + Disable NSFW sources and hide adult manga from list if possible + Paused + Reduce memory consumption (beta) + Reduce offscreen pages quality to use less memory + State + Filtering by multiple genres is not supported by this manga source + Filtering by multiple states is not supported by this manga source + Search is not supported by this manga source + You can enable download slowdown for each manga source individually in the source settings if you are having problems with server-side blocking + Skip + Grayscale + Globally + This manga + These settings can be applied globally or only to the current manga. If applied globally, individual settings will not be overridden. + Apply + Filtering by both genres and locale is not supported by this source + Filtering by both genres and states is not supported by this source + Start typing the genre name + Might help with getting the download started if you have any issues with it + Please select which content sources you would like to enable. This can also be configured later in settings + Login to sync account + Restore + Backup date: %s + Upcoming + Name reversed + Content rating + Exclude genres + Safe + Suggestive + Adult + Default tab + Mark as completed + Mark selected manga as completely read?\n\nWarning: current reading progress will be lost. + This category was hidden from the main screen and is accessible through Menu → Manage categories + Approximate reading time + Approximate remaining time + %1$s %2$s + Volume %d + Unknown volume + Your reading progress will not be saved + Vertical + Last read + Two pages + Show menu + Show/hide UI + Previous chapter + Next chapter + Previous page + Next page + Reader actions + Configure actions for tappable screen areas + Enable volume buttons + Use volume buttons for switching pages + Tap action + Long tap action + None + Reset settings to default values? This action cannot be undone. + Use two pages layout on landscape orientation (beta) + Default webtoon zoom out + Fullscreen mode + Hide system status and navigation bars + %1$d/%2$d + Show estimated reading time + The time estimation value may be inaccurate + Suggestions feature is disabled + Checking for new chapters is disabled + Show labels in navigation bar + Saving pages + Ask for the destination dir every time + Default page save directory + Remove from history + \ No newline at end of file From 99e4359523c98b1349b0126cb8b3736d553692b7 Mon Sep 17 00:00:00 2001 From: Naga Date: Sat, 24 Feb 2024 00:02:09 +0100 Subject: [PATCH 14/39] Translated using Weblate (English) Currently translated at 100.0% (596 of 596 strings) Co-authored-by: Naga Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/en/ Translation: Kotatsu/Strings --- app/src/main/res/values/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index aec0351ba..57fe834d9 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -331,7 +331,7 @@ Error details:<br><tt>%1$s</tt><br><br>1. Try to <a href="%2$s">open manga in a web browser</a> to ensure it is available on its source<br>2. Make sure you are using the <a href="kotatsu://about">latest version of Kotatsu</a><br>3. If it is available, send an error report to the developers. Show recent manga shortcuts Make recent manga available by long pressing on application icon - Tapping on the right edge, or pressing the right key, always switches to the next page + Tapping on the right edge, or pressing the right key, always switches to the next page. Ergonomic reader control Color correction Brightness From 1e19f32fc5bc31531c70b104f0df7df0b25329d4 Mon Sep 17 00:00:00 2001 From: Scrambled777 Date: Sat, 24 Feb 2024 00:02:09 +0100 Subject: [PATCH 15/39] Translated using Weblate (Hindi) Currently translated at 22.6% (135 of 596 strings) Co-authored-by: Scrambled777 Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/hi/ Translation: Kotatsu/Strings --- app/src/main/res/values-hi/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml index 669b932fa..36d0581db 100644 --- a/app/src/main/res/values-hi/strings.xml +++ b/app/src/main/res/values-hi/strings.xml @@ -93,7 +93,7 @@ नया संस्करण: %s डिवाइस से \"%s\" को स्थायी रूप से हटाएं? जो भी आप पढ़ोगे वे सब यहां दिखेगा - मांगा को नष्ट करे + मंगा हटाएं सूचना की ध्वनि साफ हो गया ब्राउसर में खोले From 3cf2c580580c68949a8f8d32108c8730b4323fe0 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Sat, 24 Feb 2024 12:13:32 +0200 Subject: [PATCH 16/39] Local manga info dialog --- .../kotatsu/core/prefs/AppSettings.kt | 2 +- .../core/ui/dialog/RecyclerViewAlertDialog.kt | 8 ++ .../kotatsu/core/ui/image/FaviconDrawable.kt | 8 +- .../org/koitharu/kotatsu/core/util/Colors.kt | 41 +++++++ .../kotatsu/details/ui/DetailsFragment.kt | 6 ++ .../details/ui/DownloadDialogHelper.kt | 4 + .../kotatsu/local/ui/info/LocalInfoDialog.kt | 100 ++++++++++++++++++ .../local/ui/info/LocalInfoViewModel.kt | 41 +++++++ .../userdata/StorageUsagePreference.kt | 30 +----- app/src/main/res/layout/dialog_local_info.xml | 54 ++++++++++ .../main/res/layout/layout_details_info.xml | 1 + app/src/main/res/values/strings.xml | 3 +- 12 files changed, 264 insertions(+), 34 deletions(-) create mode 100644 app/src/main/kotlin/org/koitharu/kotatsu/core/util/Colors.kt create mode 100644 app/src/main/kotlin/org/koitharu/kotatsu/local/ui/info/LocalInfoDialog.kt create mode 100644 app/src/main/kotlin/org/koitharu/kotatsu/local/ui/info/LocalInfoViewModel.kt create mode 100644 app/src/main/res/layout/dialog_local_info.xml diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/core/prefs/AppSettings.kt b/app/src/main/kotlin/org/koitharu/kotatsu/core/prefs/AppSettings.kt index 931211d43..c1df00a17 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/core/prefs/AppSettings.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/core/prefs/AppSettings.kt @@ -430,7 +430,7 @@ class AppSettings @Inject constructor(@ApplicationContext context: Context) { fun getPagesSaveDir(context: Context): DocumentFile? = prefs.getString(KEY_PAGES_SAVE_DIR, null)?.toUriOrNull()?.let { - DocumentFile.fromTreeUri(context, it) + DocumentFile.fromTreeUri(context, it)?.takeIf { it.canWrite() } } fun setPagesSaveDir(uri: Uri?) { diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/dialog/RecyclerViewAlertDialog.kt b/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/dialog/RecyclerViewAlertDialog.kt index 3199138e4..f5acf5d36 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/dialog/RecyclerViewAlertDialog.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/dialog/RecyclerViewAlertDialog.kt @@ -68,6 +68,14 @@ class RecyclerViewAlertDialog private constructor( return this } + fun setNeutralButton( + @StringRes textId: Int, + listener: DialogInterface.OnClickListener, + ): Builder { + delegate.setNeutralButton(textId, listener) + return this + } + fun setCancelable(isCancelable: Boolean): Builder { delegate.setCancelable(isCancelable) return this diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/image/FaviconDrawable.kt b/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/image/FaviconDrawable.kt index 492ee9f97..24c4b9461 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/image/FaviconDrawable.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/image/FaviconDrawable.kt @@ -16,6 +16,7 @@ import androidx.core.graphics.ColorUtils import androidx.core.graphics.withClip import com.google.android.material.color.MaterialColors import org.koitharu.kotatsu.R +import org.koitharu.kotatsu.core.util.Colors import kotlin.math.absoluteValue class FaviconDrawable( @@ -44,7 +45,7 @@ class FaviconDrawable( } paint.textAlign = Paint.Align.CENTER paint.isFakeBoldText = true - colorForeground = MaterialColors.harmonize(colorOfString(name), colorBackground) + colorForeground = MaterialColors.harmonize(Colors.random(name), colorBackground) } override fun draw(canvas: Canvas) { @@ -104,9 +105,4 @@ class FaviconDrawable( paint.getTextBounds(text, 0, text.length, tempRect) return testTextSize * width / tempRect.width() } - - private fun colorOfString(str: String): Int { - val hue = (str.hashCode() % 360).absoluteValue.toFloat() - return ColorUtils.HSLToColor(floatArrayOf(hue, 0.5f, 0.5f)) - } } diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/core/util/Colors.kt b/app/src/main/kotlin/org/koitharu/kotatsu/core/util/Colors.kt new file mode 100644 index 000000000..3ad46e935 --- /dev/null +++ b/app/src/main/kotlin/org/koitharu/kotatsu/core/util/Colors.kt @@ -0,0 +1,41 @@ +package org.koitharu.kotatsu.core.util + +import android.content.Context +import androidx.annotation.AttrRes +import androidx.annotation.ColorInt +import androidx.core.graphics.ColorUtils +import com.google.android.material.R +import com.google.android.material.color.MaterialColors +import org.koitharu.kotatsu.core.util.ext.getThemeColor +import kotlin.math.absoluteValue + +object Colors { + + @ColorInt + fun segmentColor(context: Context, @AttrRes resId: Int): Int { + val colorHex = String.format("%06x", context.getThemeColor(resId)) + val hue = getHue(colorHex) + val color = ColorUtils.HSLToColor(floatArrayOf(hue, 0.5f, 0.5f)) + val backgroundColor = context.getThemeColor(R.attr.colorSurfaceContainerHigh) + return MaterialColors.harmonize(color, backgroundColor) + } + + fun random(seed: Any): Int { + val hue = (seed.hashCode() % 360).absoluteValue.toFloat() + return ColorUtils.HSLToColor(floatArrayOf(hue, 0.5f, 0.5f)) + } + + private fun getHue(hex: String): Float { + val r = (hex.substring(0, 2).toInt(16)).toFloat() + val g = (hex.substring(2, 4).toInt(16)).toFloat() + val b = (hex.substring(4, 6).toInt(16)).toFloat() + + var hue = 0F + if ((r >= g) && (g >= b)) { + hue = 60 * (g - b) / (r - b) + } else if ((g > r) && (r >= b)) { + hue = 60 * (2 - (r - b) / (g - b)) + } + return hue + } +} diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/details/ui/DetailsFragment.kt b/app/src/main/kotlin/org/koitharu/kotatsu/details/ui/DetailsFragment.kt index 2533b0874..d1aa92a2b 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/details/ui/DetailsFragment.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/details/ui/DetailsFragment.kt @@ -62,6 +62,7 @@ import org.koitharu.kotatsu.list.ui.adapter.mangaGridItemAD import org.koitharu.kotatsu.list.ui.model.ListModel import org.koitharu.kotatsu.list.ui.model.MangaItemModel import org.koitharu.kotatsu.list.ui.size.StaticItemSizeResolver +import org.koitharu.kotatsu.local.ui.info.LocalInfoDialog import org.koitharu.kotatsu.main.ui.owners.NoModalBottomSheetOwner import org.koitharu.kotatsu.parsers.model.Manga import org.koitharu.kotatsu.parsers.model.MangaSource @@ -102,6 +103,7 @@ class DetailsFragment : binding.buttonScrobblingMore.setOnClickListener(this) binding.buttonRelatedMore.setOnClickListener(this) binding.infoLayout.textViewSource.setOnClickListener(this) + binding.infoLayout.textViewSize.setOnClickListener(this) binding.textViewDescription.addOnLayoutChangeListener(this) binding.textViewDescription.viewTreeObserver.addOnDrawListener(this) binding.textViewDescription.movementMethod = LinkMovementMethodCompat.getInstance() @@ -324,6 +326,10 @@ class DetailsFragment : ) } + R.id.textView_size -> { + LocalInfoDialog.show(parentFragmentManager, manga) + } + R.id.imageView_cover -> { startActivity( ImageActivity.newIntent( diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/details/ui/DownloadDialogHelper.kt b/app/src/main/kotlin/org/koitharu/kotatsu/details/ui/DownloadDialogHelper.kt index df456252f..112382d2f 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/details/ui/DownloadDialogHelper.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/details/ui/DownloadDialogHelper.kt @@ -8,6 +8,7 @@ import org.koitharu.kotatsu.core.ui.dialog.RecyclerViewAlertDialog import org.koitharu.kotatsu.core.ui.list.OnListItemClickListener import org.koitharu.kotatsu.download.ui.dialog.DownloadOption import org.koitharu.kotatsu.download.ui.dialog.downloadOptionAD +import org.koitharu.kotatsu.settings.SettingsActivity class DownloadDialogHelper( private val host: View, @@ -57,6 +58,9 @@ class DownloadDialogHelper( .setCancelable(true) .setTitle(R.string.download) .setNegativeButton(android.R.string.cancel) + .setNeutralButton(R.string.settings) { _, _ -> + host.context.startActivity(SettingsActivity.newDownloadsSettingsIntent(host.context)) + } .setItems(options) .create() .also { it.show() } diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/local/ui/info/LocalInfoDialog.kt b/app/src/main/kotlin/org/koitharu/kotatsu/local/ui/info/LocalInfoDialog.kt new file mode 100644 index 000000000..95ae313f6 --- /dev/null +++ b/app/src/main/kotlin/org/koitharu/kotatsu/local/ui/info/LocalInfoDialog.kt @@ -0,0 +1,100 @@ +package org.koitharu.kotatsu.local.ui.info + +import android.content.res.ColorStateList +import android.os.Bundle +import android.os.Parcelable +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.annotation.AttrRes +import androidx.annotation.ColorInt +import androidx.annotation.StringRes +import androidx.core.graphics.ColorUtils +import androidx.core.widget.TextViewCompat +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.viewModels +import com.google.android.material.color.MaterialColors +import com.google.android.material.dialog.MaterialAlertDialogBuilder +import dagger.hilt.android.AndroidEntryPoint +import kotlinx.coroutines.flow.combine +import org.koitharu.kotatsu.R +import org.koitharu.kotatsu.core.model.parcelable.ParcelableManga +import org.koitharu.kotatsu.core.ui.AlertDialogFragment +import org.koitharu.kotatsu.core.ui.widgets.SegmentedBarView +import org.koitharu.kotatsu.core.util.Colors +import org.koitharu.kotatsu.core.util.FileSize +import org.koitharu.kotatsu.core.util.ext.combine +import org.koitharu.kotatsu.core.util.ext.getThemeColor +import org.koitharu.kotatsu.core.util.ext.observe +import org.koitharu.kotatsu.core.util.ext.showDistinct +import org.koitharu.kotatsu.core.util.ext.withArgs +import org.koitharu.kotatsu.databinding.DialogLocalInfoBinding +import org.koitharu.kotatsu.parsers.model.Manga +import org.koitharu.kotatsu.settings.userdata.StorageUsage +import com.google.android.material.R as materialR + +@AndroidEntryPoint +class LocalInfoDialog : AlertDialogFragment() { + + private val viewModel: LocalInfoViewModel by viewModels() + + override fun onBuildDialog(builder: MaterialAlertDialogBuilder): MaterialAlertDialogBuilder { + return super.onBuildDialog(builder) + .setTitle(R.string.saved_manga) + .setNegativeButton(R.string.close, null) + } + + override fun onCreateViewBinding(inflater: LayoutInflater, container: ViewGroup?): DialogLocalInfoBinding { + return DialogLocalInfoBinding.inflate(inflater, container, false) + } + + override fun onViewBindingCreated(binding: DialogLocalInfoBinding, savedInstanceState: Bundle?) { + super.onViewBindingCreated(binding, savedInstanceState) + viewModel.path.observe(this) { + binding.textViewPath.text = it + } + combine(viewModel.size, viewModel.availableSize, ::Pair).observe(this) { + if (it.first >= 0 && it.second >= 0) { + setSegments(it.first, it.second) + } else { + binding.barView.animateSegments(emptyList()) + } + } + } + + private fun setSegments(size: Long, available: Long) { + val view = viewBinding?.barView ?: return + val total = size + available + val segment = SegmentedBarView.Segment( + percent = (size.toDouble() / total.toDouble()).toFloat(), + color = Colors.segmentColor(view.context, materialR.attr.colorPrimary), + ) + requireViewBinding().labelUsed.text = view.context.getString( + R.string.memory_usage_pattern, + getString(R.string.this_manga), + FileSize.BYTES.format(view.context, size), + ) + requireViewBinding().labelAvailable.text = view.context.getString( + R.string.memory_usage_pattern, + getString(R.string.available), + FileSize.BYTES.format(view.context, available), + ) + TextViewCompat.setCompoundDrawableTintList( + requireViewBinding().labelUsed, + ColorStateList.valueOf(segment.color), + ) + view.animateSegments(listOf(segment)) + } + + companion object { + + const val ARG_MANGA = "manga" + private const val TAG = "LocalInfoDialog" + + fun show(fm: FragmentManager, manga: Manga) { + LocalInfoDialog().withArgs(1) { + putParcelable(ARG_MANGA, ParcelableManga(manga)) + }.showDistinct(fm, TAG) + } + } +} diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/local/ui/info/LocalInfoViewModel.kt b/app/src/main/kotlin/org/koitharu/kotatsu/local/ui/info/LocalInfoViewModel.kt new file mode 100644 index 000000000..81436b7ed --- /dev/null +++ b/app/src/main/kotlin/org/koitharu/kotatsu/local/ui/info/LocalInfoViewModel.kt @@ -0,0 +1,41 @@ +package org.koitharu.kotatsu.local.ui.info + +import androidx.core.net.toFile +import androidx.core.net.toUri +import androidx.lifecycle.SavedStateHandle +import dagger.hilt.android.lifecycle.HiltViewModel +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.flow.MutableStateFlow +import org.koitharu.kotatsu.core.model.parcelable.ParcelableManga +import org.koitharu.kotatsu.core.ui.BaseViewModel +import org.koitharu.kotatsu.core.ui.widgets.SegmentedBarView +import org.koitharu.kotatsu.core.util.ext.computeSize +import org.koitharu.kotatsu.core.util.ext.require +import org.koitharu.kotatsu.core.util.ext.toFileOrNull +import org.koitharu.kotatsu.local.data.LocalMangaRepository +import org.koitharu.kotatsu.local.data.LocalStorageManager +import javax.inject.Inject + +@HiltViewModel +class LocalInfoViewModel @Inject constructor( + savedStateHandle: SavedStateHandle, + private val localMangaRepository: LocalMangaRepository, + private val storageManager: LocalStorageManager, +) : BaseViewModel() { + + private val manga = savedStateHandle.require(LocalInfoDialog.ARG_MANGA).manga + + val path = MutableStateFlow(null) + val size = MutableStateFlow(-1L) + val availableSize = MutableStateFlow(-1L) + + init { + launchLoadingJob(Dispatchers.Default) { + val file = manga.url.toUri().toFileOrNull() ?: localMangaRepository.findSavedManga(manga)?.file + requireNotNull(file) + path.value = file.path + size.value = file.computeSize() + availableSize.value = storageManager.computeAvailableSize() + } + } +} diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/settings/userdata/StorageUsagePreference.kt b/app/src/main/kotlin/org/koitharu/kotatsu/settings/userdata/StorageUsagePreference.kt index 20f114981..bb072537a 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/settings/userdata/StorageUsagePreference.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/settings/userdata/StorageUsagePreference.kt @@ -14,6 +14,7 @@ import com.google.android.material.color.MaterialColors import kotlinx.coroutines.flow.FlowCollector import org.koitharu.kotatsu.R import org.koitharu.kotatsu.core.ui.widgets.SegmentedBarView +import org.koitharu.kotatsu.core.util.Colors import org.koitharu.kotatsu.core.util.FileSize import org.koitharu.kotatsu.core.util.ext.getThemeColor import org.koitharu.kotatsu.databinding.PreferenceMemoryUsageBinding @@ -38,15 +39,15 @@ class StorageUsagePreference @JvmOverloads constructor( val binding = PreferenceMemoryUsageBinding.bind(holder.itemView) val storageSegment = SegmentedBarView.Segment( usage?.savedManga?.percent ?: 0f, - segmentColor(materialR.attr.colorPrimary), + Colors.segmentColor(context, materialR.attr.colorPrimary), ) val pagesSegment = SegmentedBarView.Segment( usage?.pagesCache?.percent ?: 0f, - segmentColor(materialR.attr.colorSecondary), + Colors.segmentColor(context, materialR.attr.colorSecondary), ) val otherSegment = SegmentedBarView.Segment( usage?.otherCache?.percent ?: 0f, - segmentColor(materialR.attr.colorTertiary), + Colors.segmentColor(context, materialR.attr.colorTertiary), ) with(binding) { @@ -81,27 +82,4 @@ class StorageUsagePreference @JvmOverloads constructor( context.getString(emptyResId) } } - - private fun getHue(hex: String): Float { - val r = (hex.substring(0, 2).toInt(16)).toFloat() - val g = (hex.substring(2, 4).toInt(16)).toFloat() - val b = (hex.substring(4, 6).toInt(16)).toFloat() - - var hue = 0F - if ((r >= g) && (g >= b)) { - hue = 60 * (g - b) / (r - b) - } else if ((g > r) && (r >= b)) { - hue = 60 * (2 - (r - b) / (g - b)) - } - return hue - } - - @ColorInt - private fun segmentColor(@AttrRes resId: Int): Int { - val colorHex = String.format("%06x", context.getThemeColor(resId)) - val hue = getHue(colorHex) - val color = ColorUtils.HSLToColor(floatArrayOf(hue, 0.5f, 0.5f)) - val backgroundColor = context.getThemeColor(materialR.attr.colorSurfaceContainerHigh) - return MaterialColors.harmonize(color, backgroundColor) - } } diff --git a/app/src/main/res/layout/dialog_local_info.xml b/app/src/main/res/layout/dialog_local_info.xml new file mode 100644 index 000000000..eecb46c07 --- /dev/null +++ b/app/src/main/res/layout/dialog_local_info.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/layout_details_info.xml b/app/src/main/res/layout/layout_details_info.xml index d32880195..9a6931d7b 100644 --- a/app/src/main/res/layout/layout_details_info.xml +++ b/app/src/main/res/layout/layout_details_info.xml @@ -66,6 +66,7 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" + android:background="@drawable/custom_selectable_item_background" android:visibility="gone" app:drawableTopCompat="@drawable/ic_storage" tools:text="1.8 GiB" diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 57fe834d9..bc7f8e99b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -598,4 +598,5 @@ Ask for the destination dir every time Default page save directory Remove from history - \ No newline at end of file + Location + From 2dc4de0a3c87137edb2b93d71f779b82d75135f0 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Sat, 24 Feb 2024 12:25:44 +0200 Subject: [PATCH 17/39] Update dependencies --- app/build.gradle | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 01f101ce9..97baf8b5f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -16,8 +16,8 @@ android { applicationId 'org.koitharu.kotatsu' minSdk = 21 targetSdk = 34 - versionCode = 624 - versionName = '6.7.2' + versionCode = 625 + versionName = '6.7.3' generatedDensities = [] testInstrumentationRunner 'org.koitharu.kotatsu.HiltTestRunner' ksp { @@ -82,7 +82,7 @@ afterEvaluate { } dependencies { //noinspection GradleDependency - implementation('com.github.KotatsuApp:kotatsu-parsers:3ff028c4e9') { + implementation('com.github.KotatsuApp:kotatsu-parsers:103f578c61') { exclude group: 'org.json', module: 'json' } @@ -128,11 +128,11 @@ dependencies { implementation 'com.google.dagger:hilt-android:2.50' kapt 'com.google.dagger:hilt-compiler:2.50' - implementation 'androidx.hilt:hilt-work:1.1.0' - kapt 'androidx.hilt:hilt-compiler:1.1.0' + implementation 'androidx.hilt:hilt-work:1.2.0' + kapt 'androidx.hilt:hilt-compiler:1.2.0' - implementation 'io.coil-kt:coil-base:2.5.0' - implementation 'io.coil-kt:coil-svg:2.5.0' + implementation 'io.coil-kt:coil-base:2.6.0' + implementation 'io.coil-kt:coil-svg:2.6.0' implementation 'com.github.KotatsuApp:subsampling-scale-image-view:02e6d6cfe9' implementation 'com.github.solkin:disk-lru-cache:1.4' implementation 'io.noties.markwon:core:4.6.2' From e97a745713c029c8757da2ce72338db8e8681d92 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Sat, 24 Feb 2024 12:50:59 +0200 Subject: [PATCH 18/39] Fix filter ui issue #779 --- app/src/main/res/layout/fragment_filter_header.xml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/layout/fragment_filter_header.xml b/app/src/main/res/layout/fragment_filter_header.xml index 6436d3c94..308ca6991 100644 --- a/app/src/main/res/layout/fragment_filter_header.xml +++ b/app/src/main/res/layout/fragment_filter_header.xml @@ -3,7 +3,7 @@ xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/scrollView" - android:layout_width="wrap_content" + android:layout_width="match_parent" android:layout_height="wrap_content" android:clipToPadding="false" android:paddingHorizontal="12dp" @@ -13,6 +13,8 @@ android:id="@+id/chips_tags" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:clipChildren="false" + android:clipToPadding="false" android:paddingVertical="@dimen/margin_small" app:chipStyle="@style/Widget.Kotatsu.Chip.Filter" app:selectionRequired="false" From 45c3c05f011244bac11b94006bed7f75c5da65fa Mon Sep 17 00:00:00 2001 From: Koitharu Date: Sat, 24 Feb 2024 13:13:35 +0200 Subject: [PATCH 19/39] Fix updating history in incognito mode #783 --- .../org/koitharu/kotatsu/core/os/AppShortcutManagerTest.kt | 1 + .../koitharu/kotatsu/settings/backup/AppBackupAgentTest.kt | 5 ++++- .../org/koitharu/kotatsu/details/ui/DetailsViewModel.kt | 1 + .../org/koitharu/kotatsu/history/data/HistoryRepository.kt | 4 ++-- .../koitharu/kotatsu/history/domain/HistoryUpdateUseCase.kt | 1 + .../org/koitharu/kotatsu/history/domain/MarkAsReadUseCase.kt | 1 + 6 files changed, 10 insertions(+), 3 deletions(-) diff --git a/app/src/androidTest/kotlin/org/koitharu/kotatsu/core/os/AppShortcutManagerTest.kt b/app/src/androidTest/kotlin/org/koitharu/kotatsu/core/os/AppShortcutManagerTest.kt index bbc70b8db..24c33b620 100644 --- a/app/src/androidTest/kotlin/org/koitharu/kotatsu/core/os/AppShortcutManagerTest.kt +++ b/app/src/androidTest/kotlin/org/koitharu/kotatsu/core/os/AppShortcutManagerTest.kt @@ -57,6 +57,7 @@ class AppShortcutManagerTest { page = 4, scroll = 2, percent = 0.3f, + force = false, ) awaitUpdate() diff --git a/app/src/androidTest/kotlin/org/koitharu/kotatsu/settings/backup/AppBackupAgentTest.kt b/app/src/androidTest/kotlin/org/koitharu/kotatsu/settings/backup/AppBackupAgentTest.kt index 40e97ea7c..f01cc9521 100644 --- a/app/src/androidTest/kotlin/org/koitharu/kotatsu/settings/backup/AppBackupAgentTest.kt +++ b/app/src/androidTest/kotlin/org/koitharu/kotatsu/settings/backup/AppBackupAgentTest.kt @@ -7,7 +7,9 @@ import dagger.hilt.android.testing.HiltAndroidRule import dagger.hilt.android.testing.HiltAndroidTest import kotlinx.coroutines.flow.first import kotlinx.coroutines.test.runTest -import org.junit.Assert.* +import org.junit.Assert.assertEquals +import org.junit.Assert.assertNull +import org.junit.Assert.assertTrue import org.junit.Before import org.junit.Rule import org.junit.Test @@ -61,6 +63,7 @@ class AppBackupAgentTest { page = 3, scroll = 40, percent = 0.2f, + force = false, ) val history = checkNotNull(historyRepository.getOne(SampleData.manga)) diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/details/ui/DetailsViewModel.kt b/app/src/main/kotlin/org/koitharu/kotatsu/details/ui/DetailsViewModel.kt index e9f6d59a2..d79a9fb73 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/details/ui/DetailsViewModel.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/details/ui/DetailsViewModel.kt @@ -320,6 +320,7 @@ class DetailsViewModel @Inject constructor( page = 0, scroll = 0, percent = percent, + force = true, ) } } diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/history/data/HistoryRepository.kt b/app/src/main/kotlin/org/koitharu/kotatsu/history/data/HistoryRepository.kt index 5d2e06292..5f075777c 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/history/data/HistoryRepository.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/history/data/HistoryRepository.kt @@ -90,8 +90,8 @@ class HistoryRepository @Inject constructor( .distinctUntilChanged() } - suspend fun addOrUpdate(manga: Manga, chapterId: Long, page: Int, scroll: Int, percent: Float) { - if (shouldSkip(manga)) { + suspend fun addOrUpdate(manga: Manga, chapterId: Long, page: Int, scroll: Int, percent: Float, force: Boolean) { + if (!force && shouldSkip(manga)) { return } db.withTransaction { diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/history/domain/HistoryUpdateUseCase.kt b/app/src/main/kotlin/org/koitharu/kotatsu/history/domain/HistoryUpdateUseCase.kt index a0af9d1a8..2af13e3fc 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/history/domain/HistoryUpdateUseCase.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/history/domain/HistoryUpdateUseCase.kt @@ -24,6 +24,7 @@ class HistoryUpdateUseCase @Inject constructor( page = readerState.page, scroll = readerState.scroll, percent = percent, + force = false, ) } diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/history/domain/MarkAsReadUseCase.kt b/app/src/main/kotlin/org/koitharu/kotatsu/history/domain/MarkAsReadUseCase.kt index cd24dbfc0..49dbb548c 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/history/domain/MarkAsReadUseCase.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/history/domain/MarkAsReadUseCase.kt @@ -30,6 +30,7 @@ class MarkAsReadUseCase @Inject constructor( page = pages.lastIndex, scroll = 0, percent = 1f, + force = true, ) } From 2c07d2c8e16d62e75410f7fce369a806ab086135 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Sat, 24 Feb 2024 13:17:03 +0200 Subject: [PATCH 20/39] Increase Kitsu password max length #774 --- app/src/main/res/layout/activity_kitsu_auth.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/layout/activity_kitsu_auth.xml b/app/src/main/res/layout/activity_kitsu_auth.xml index f6166696e..b2d1eecb4 100644 --- a/app/src/main/res/layout/activity_kitsu_auth.xml +++ b/app/src/main/res/layout/activity_kitsu_auth.xml @@ -58,6 +58,7 @@ android:autofillHints="emailAddress" android:imeOptions="actionDone" android:inputType="textEmailAddress" + android:maxLength="512" android:singleLine="true" android:textSize="16sp" tools:hint="Email" /> @@ -84,7 +85,7 @@ android:autofillHints="password" android:imeOptions="actionDone" android:inputType="textPassword" - android:maxLength="24" + android:maxLength="512" android:singleLine="true" android:textSize="16sp" tools:hint="Password" /> From e00a5b7505f940596815277112eec46567cc3015 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Sat, 24 Feb 2024 13:48:56 +0200 Subject: [PATCH 21/39] Fix open Kitsu auth #773 --- .../org/koitharu/kotatsu/settings/ServicesSettingsFragment.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/settings/ServicesSettingsFragment.kt b/app/src/main/kotlin/org/koitharu/kotatsu/settings/ServicesSettingsFragment.kt index 2eccb5ce2..61750515e 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/settings/ServicesSettingsFragment.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/settings/ServicesSettingsFragment.kt @@ -28,6 +28,7 @@ import org.koitharu.kotatsu.scrobbling.shikimori.data.ShikimoriRepository import org.koitharu.kotatsu.sync.domain.SyncController import org.koitharu.kotatsu.sync.ui.SyncSettingsIntent import org.koitharu.kotatsu.core.util.ext.printStackTraceDebug +import org.koitharu.kotatsu.scrobbling.kitsu.ui.KitsuAuthActivity import javax.inject.Inject @AndroidEntryPoint @@ -111,7 +112,7 @@ class ServicesSettingsFragment : BasePreferenceFragment(R.string.services), AppSettings.KEY_KITSU -> { if (!kitsuRepository.isAuthorized) { - launchScrobblerAuth(kitsuRepository) + startActivity(Intent(preference.context, KitsuAuthActivity::class.java)) } else { startActivity(ScrobblerConfigActivity.newIntent(preference.context, ScrobblerService.KITSU)) } From 6b1240fccbd4951f8364bd350d3b57a9daef72e4 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Sat, 24 Feb 2024 14:26:31 +0200 Subject: [PATCH 22/39] Fix crashes --- .../koitharu/kotatsu/browser/BrowserActivity.kt | 3 +-- .../browser/cloudflare/CloudFlareActivity.kt | 9 +-------- .../koitharu/kotatsu/core/ui/BaseActivity.kt | 17 +++++++++++++++++ .../koitharu/kotatsu/core/util/ext/Android.kt | 16 ---------------- .../koitharu/kotatsu/core/util/ext/Throwable.kt | 5 ++--- .../reader/ui/tapgrid/TapGridDispatcher.kt | 11 +++++++---- .../settings/sources/auth/SourceAuthActivity.kt | 3 +-- 7 files changed, 29 insertions(+), 35 deletions(-) diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/browser/BrowserActivity.kt b/app/src/main/kotlin/org/koitharu/kotatsu/browser/BrowserActivity.kt index af49d1dcd..15c03582d 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/browser/BrowserActivity.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/browser/BrowserActivity.kt @@ -14,7 +14,6 @@ import androidx.core.view.isVisible import androidx.core.view.updatePadding import org.koitharu.kotatsu.R import org.koitharu.kotatsu.core.ui.BaseActivity -import org.koitharu.kotatsu.core.util.ext.catchingWebViewUnavailability import org.koitharu.kotatsu.databinding.ActivityBrowserBinding import org.koitharu.kotatsu.parsers.network.UserAgents import com.google.android.material.R as materialR @@ -26,7 +25,7 @@ class BrowserActivity : BaseActivity(), BrowserCallback override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - if (!catchingWebViewUnavailability { setContentView(ActivityBrowserBinding.inflate(layoutInflater)) }) { + if (!setContentViewWebViewSafe { ActivityBrowserBinding.inflate(layoutInflater) }) { return } supportActionBar?.run { diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/browser/cloudflare/CloudFlareActivity.kt b/app/src/main/kotlin/org/koitharu/kotatsu/browser/cloudflare/CloudFlareActivity.kt index caf926f30..179ae74c8 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/browser/cloudflare/CloudFlareActivity.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/browser/cloudflare/CloudFlareActivity.kt @@ -27,7 +27,6 @@ import org.koitharu.kotatsu.core.network.CommonHeaders import org.koitharu.kotatsu.core.network.cookies.MutableCookieJar import org.koitharu.kotatsu.core.ui.BaseActivity import org.koitharu.kotatsu.core.util.TaggedActivityResult -import org.koitharu.kotatsu.core.util.ext.catchingWebViewUnavailability import org.koitharu.kotatsu.databinding.ActivityBrowserBinding import org.koitharu.kotatsu.parsers.network.UserAgents import javax.inject.Inject @@ -45,13 +44,7 @@ class CloudFlareActivity : BaseActivity(), CloudFlareCal override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - if (!catchingWebViewUnavailability { - setContentView( - ActivityBrowserBinding.inflate( - layoutInflater, - ), - ) - }) { + if (!setContentViewWebViewSafe { ActivityBrowserBinding.inflate(layoutInflater) }) { return } supportActionBar?.run { diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/BaseActivity.kt b/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/BaseActivity.kt index bb27f8a59..7e889dd46 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/BaseActivity.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/BaseActivity.kt @@ -8,6 +8,7 @@ import android.os.Bundle import android.view.KeyEvent import android.view.View import android.view.ViewGroup +import android.widget.Toast import androidx.annotation.CallSuper import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.view.ActionMode @@ -29,6 +30,7 @@ import org.koitharu.kotatsu.core.ui.util.ActionModeDelegate import org.koitharu.kotatsu.core.ui.util.BaseActivityEntryPoint import org.koitharu.kotatsu.core.ui.util.WindowInsetsDelegate import org.koitharu.kotatsu.core.util.ext.getThemeColor +import org.koitharu.kotatsu.core.util.ext.isWebViewUnavailable @Suppress("LeakingThis") abstract class BaseActivity : @@ -164,6 +166,21 @@ abstract class BaseActivity : intent?.putExtra(EXTRA_DATA, intent.data) } + protected fun setContentViewWebViewSafe(viewBindingProducer: () -> B): Boolean { + return try { + setContentView(viewBindingProducer()) + true + } catch (e: Exception) { + if (e.isWebViewUnavailable()) { + Toast.makeText(this, R.string.web_view_unavailable, Toast.LENGTH_LONG).show() + finishAfterTransition() + false + } else { + throw e + } + } + } + companion object { const val EXTRA_DATA = "data" diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/core/util/ext/Android.kt b/app/src/main/kotlin/org/koitharu/kotatsu/core/util/ext/Android.kt index b237755a0..3e1c622a4 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/core/util/ext/Android.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/core/util/ext/Android.kt @@ -27,7 +27,6 @@ import android.provider.Settings import android.view.View import android.view.ViewPropertyAnimator import android.view.Window -import android.widget.Toast import androidx.activity.result.ActivityResultLauncher import androidx.annotation.IntegerRes import androidx.annotation.WorkerThread @@ -216,21 +215,6 @@ fun Context.findActivity(): Activity? = when (this) { else -> null } -inline fun Activity.catchingWebViewUnavailability(block: () -> Unit): Boolean { - return try { - block() - true - } catch (e: Exception) { - if (e.isWebViewUnavailable()) { - Toast.makeText(this, R.string.web_view_unavailable, Toast.LENGTH_LONG).show() - finishAfterTransition() - false - } else { - throw e - } - } -} - fun Context.checkNotificationPermission(): Boolean = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { ContextCompat.checkSelfPermission(this, Manifest.permission.POST_NOTIFICATIONS) == PackageManager.PERMISSION_GRANTED } else { diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/core/util/ext/Throwable.kt b/app/src/main/kotlin/org/koitharu/kotatsu/core/util/ext/Throwable.kt index 21e6e838e..aeb3de5c8 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/core/util/ext/Throwable.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/core/util/ext/Throwable.kt @@ -2,7 +2,6 @@ package org.koitharu.kotatsu.core.util.ext import android.content.ActivityNotFoundException import android.content.res.Resources -import android.util.AndroidRuntimeException import androidx.annotation.DrawableRes import androidx.collection.arraySetOf import coil.network.HttpException @@ -115,8 +114,8 @@ private val reportableExceptions = arraySetOf>( ) fun Throwable.isWebViewUnavailable(): Boolean { - return (this is AndroidRuntimeException && message?.contains("WebView") == true) || - cause?.isWebViewUnavailable() == true + val trace = stackTraceToString() + return trace.contains("android.webkit.WebView.") } @Suppress("FunctionName") diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/tapgrid/TapGridDispatcher.kt b/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/tapgrid/TapGridDispatcher.kt index 96ec3d580..9987cd4cf 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/tapgrid/TapGridDispatcher.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/tapgrid/TapGridDispatcher.kt @@ -32,7 +32,8 @@ class TapGridDispatcher( if (!isDispatching) { return true } - return listener.onGridTouch(getArea(event.rawX, event.rawY)) + val area = getArea(event.rawX, event.rawY) ?: return false + return listener.onGridTouch(area) } override fun onDoubleTapEvent(e: MotionEvent): Boolean { @@ -42,11 +43,12 @@ class TapGridDispatcher( override fun onLongPress(event: MotionEvent) { if (isDispatching) { - listener.onGridLongTouch(getArea(event.rawX, event.rawY)) + val area = getArea(event.rawX, event.rawY) ?: return + listener.onGridLongTouch(area) } } - private fun getArea(x: Float, y: Float): TapGridArea { + private fun getArea(x: Float, y: Float): TapGridArea? { val xIndex = (x * 2f / width).roundToInt() val yIndex = (y * 2f / height).roundToInt() val area = when (xIndex) { @@ -73,7 +75,8 @@ class TapGridDispatcher( else -> null } - return checkNotNull(area) { "Invalid area ($xIndex, $yIndex)" } + assert(area != null) { "Invalid area ($xIndex, $yIndex)" } + return area } interface OnGridTouchListener { diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/settings/sources/auth/SourceAuthActivity.kt b/app/src/main/kotlin/org/koitharu/kotatsu/settings/sources/auth/SourceAuthActivity.kt index 7dd9ba8a2..20fe6d072 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/settings/sources/auth/SourceAuthActivity.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/settings/sources/auth/SourceAuthActivity.kt @@ -22,7 +22,6 @@ import org.koitharu.kotatsu.core.parser.MangaRepository import org.koitharu.kotatsu.core.parser.RemoteMangaRepository import org.koitharu.kotatsu.core.ui.BaseActivity import org.koitharu.kotatsu.core.util.TaggedActivityResult -import org.koitharu.kotatsu.core.util.ext.catchingWebViewUnavailability import org.koitharu.kotatsu.core.util.ext.getSerializableExtraCompat import org.koitharu.kotatsu.databinding.ActivityBrowserBinding import org.koitharu.kotatsu.parsers.MangaParserAuthProvider @@ -43,7 +42,7 @@ class SourceAuthActivity : BaseActivity(), BrowserCallba @SuppressLint("SetJavaScriptEnabled") override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - if (!catchingWebViewUnavailability { setContentView(ActivityBrowserBinding.inflate(layoutInflater)) }) { + if (!setContentViewWebViewSafe { ActivityBrowserBinding.inflate(layoutInflater) }) { return } val source = intent?.getSerializableExtraCompat(EXTRA_SOURCE) From 5139feb51acdba674f855035ef865cd8968e9a52 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Wed, 28 Feb 2024 13:55:02 +0200 Subject: [PATCH 23/39] Fix pages saving --- app/build.gradle | 8 ++++---- .../org/koitharu/kotatsu/reader/ui/ReaderActivity.kt | 12 ++++++++++++ .../kotatsu/reader/ui/config/ReaderConfigSheet.kt | 12 +++--------- build.gradle | 4 ++-- 4 files changed, 21 insertions(+), 15 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 97baf8b5f..fad31342c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -126,8 +126,8 @@ dependencies { implementation 'com.hannesdorfmann:adapterdelegates4-kotlin-dsl:4.3.2' implementation 'com.hannesdorfmann:adapterdelegates4-kotlin-dsl-viewbinding:4.3.2' - implementation 'com.google.dagger:hilt-android:2.50' - kapt 'com.google.dagger:hilt-compiler:2.50' + implementation 'com.google.dagger:hilt-android:2.51' + kapt 'com.google.dagger:hilt-compiler:2.51' implementation 'androidx.hilt:hilt-work:1.2.0' kapt 'androidx.hilt:hilt-compiler:1.2.0' @@ -160,6 +160,6 @@ dependencies { androidTestImplementation 'androidx.room:room-testing:2.6.1' androidTestImplementation 'com.squareup.moshi:moshi-kotlin:1.15.1' - androidTestImplementation 'com.google.dagger:hilt-android-testing:2.50' - kaptAndroidTest 'com.google.dagger:hilt-android-compiler:2.50' + androidTestImplementation 'com.google.dagger:hilt-android-testing:2.51' + kaptAndroidTest 'com.google.dagger:hilt-android-compiler:2.51' } diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/ReaderActivity.kt b/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/ReaderActivity.kt index 660e68eea..449367099 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/ReaderActivity.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/ReaderActivity.kt @@ -14,6 +14,7 @@ import android.view.MotionEvent import android.view.View import android.view.ViewGroup.MarginLayoutParams import android.view.WindowManager +import androidx.activity.result.ActivityResultCallback import androidx.activity.viewModels import androidx.core.graphics.Insets import androidx.core.view.OnApplyWindowInsetsListener @@ -74,6 +75,7 @@ class ReaderActivity : ReaderControlDelegate.OnInteractionListener, OnApplyWindowInsetsListener, IdlingDetector.Callback, + ActivityResultCallback, ZoomControl.ZoomControlListener { @Inject @@ -83,6 +85,7 @@ class ReaderActivity : lateinit var tapGridSettings: TapGridSettings private val idlingDetector = IdlingDetector(TimeUnit.SECONDS.toMillis(10), this) + private val savePageRequest = registerForActivityResult(PageSaveContract(), this) private val viewModel: ReaderViewModel by viewModels() @@ -158,6 +161,10 @@ class ReaderActivity : viewBinding.toolbarBottom.addMenuProvider(ReaderBottomMenuProvider(this, readerManager, viewModel)) } + override fun onActivityResult(result: Uri?) { + viewModel.onActivityResult(result) + } + override fun getParentActivityIntent(): Intent? { val manga = viewModel.manga?.toManga() ?: return null return DetailsActivity.newIntent(this, manga) @@ -371,6 +378,11 @@ class ReaderActivity : return reader.isResumed && supportFragmentManager.fragments.lastOrNull() === reader } + override fun onSavePageClick() { + val page = viewModel.getCurrentPage() ?: return + viewModel.saveCurrentPage(page, savePageRequest) + } + private fun onReaderBarChanged(isBarEnabled: Boolean) { viewBinding.infoBar.isVisible = isBarEnabled && viewBinding.appbarTop.isGone } diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/config/ReaderConfigSheet.kt b/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/config/ReaderConfigSheet.kt index d1f878a58..be0c929c4 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/config/ReaderConfigSheet.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/config/ReaderConfigSheet.kt @@ -39,14 +39,12 @@ import javax.inject.Inject @AndroidEntryPoint class ReaderConfigSheet : BaseAdaptiveSheet(), - ActivityResultCallback, View.OnClickListener, MaterialButtonToggleGroup.OnButtonCheckedListener, Slider.OnChangeListener, CompoundButton.OnCheckedChangeListener { private val viewModel by activityViewModels() - private val savePageRequest = registerForActivityResult(PageSaveContract(), this) @Inject lateinit var orientationHelper: ScreenOrientationHelper @@ -115,8 +113,7 @@ class ReaderConfigSheet : } R.id.button_save_page -> { - val page = viewModel.getCurrentPage() ?: return - viewModel.saveCurrentPage(page, savePageRequest) + findCallback()?.onSavePageClick() ?: return dismissAllowingStateLoss() } @@ -181,11 +178,6 @@ class ReaderConfigSheet : (viewBinding ?: return).labelTimerValue.text = getString(R.string.speed_value, value * 10f) } - override fun onActivityResult(result: Uri?) { - viewModel.onActivityResult(result) - dismissAllowingStateLoss() - } - private fun observeScreenOrientation() { orientationHelper.observeAutoOrientation() .onEach { @@ -215,6 +207,8 @@ class ReaderConfigSheet : fun onReaderModeChanged(mode: ReaderMode) fun onDoubleModeChanged(isEnabled: Boolean) + + fun onSavePageClick() } companion object { diff --git a/build.gradle b/build.gradle index 1fcc296f3..16edcf7c1 100644 --- a/build.gradle +++ b/build.gradle @@ -6,8 +6,8 @@ buildscript { dependencies { classpath 'com.android.tools.build:gradle:8.2.2' classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.22' - classpath 'com.google.dagger:hilt-android-gradle-plugin:2.50' - classpath 'com.google.devtools.ksp:symbol-processing-gradle-plugin:1.9.22-1.0.16' + classpath 'com.google.dagger:hilt-android-gradle-plugin:2.51' + classpath 'com.google.devtools.ksp:symbol-processing-gradle-plugin:1.9.22-1.0.17' } } From c3294e64592675b73ccbe93a7b94d9b98103b7c0 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Wed, 28 Feb 2024 13:58:23 +0200 Subject: [PATCH 24/39] Fix double pages mode enabling --- .../kotlin/org/koitharu/kotatsu/reader/ui/ReaderManager.kt | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/ReaderManager.kt b/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/ReaderManager.kt index b543fc7b1..c3d3c8698 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/ReaderManager.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/ReaderManager.kt @@ -25,8 +25,7 @@ class ReaderManager( private val modeMap = EnumMap>>(ReaderMode::class.java) init { - val useDoublePages = container.resources.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE - && settings.isReaderDoubleOnLandscape + val useDoublePages = isLandscape() && settings.isReaderDoubleOnLandscape invalidateTypesMap(useDoublePages) } @@ -49,7 +48,7 @@ class ReaderManager( fun setDoubleReaderMode(isEnabled: Boolean) { val prevMode = currentMode - invalidateTypesMap(isEnabled) + invalidateTypesMap(isEnabled && isLandscape()) val newMode = currentMode ?: return if (newMode != prevMode) { replace(newMode) @@ -70,4 +69,6 @@ class ReaderManager( modeMap[ReaderMode.WEBTOON] = WebtoonReaderFragment::class.java modeMap[ReaderMode.VERTICAL] = VerticalReaderFragment::class.java } + + private fun isLandscape() = container.resources.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE } From 40867dd2b6e0ac177d6593f3ace551b3292f89a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B0=D0=BA=D0=B0=D1=80=20=D0=A0=D0=B0=D0=B7=D0=B8?= =?UTF-8?q?=D0=BD?= Date: Wed, 28 Feb 2024 08:02:08 +0100 Subject: [PATCH 25/39] Translated using Weblate (Ukrainian) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 100.0% (597 of 597 strings) Translated using Weblate (Russian) Currently translated at 100.0% (597 of 597 strings) Translated using Weblate (Belarusian) Currently translated at 100.0% (597 of 597 strings) Co-authored-by: Макар Разин Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/be/ Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/ru/ Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/uk/ Translation: Kotatsu/Strings --- app/src/main/res/values-be/strings.xml | 5 +++-- app/src/main/res/values-ru/strings.xml | 5 +++-- app/src/main/res/values-uk/strings.xml | 3 ++- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/app/src/main/res/values-be/strings.xml b/app/src/main/res/values-be/strings.xml index fc804ae43..96ed7bfd7 100644 --- a/app/src/main/res/values-be/strings.xml +++ b/app/src/main/res/values-be/strings.xml @@ -201,7 +201,7 @@ Заўсёды блакуйце Забараніць для NSFW Немагчыма загрузіць спіс жанраў - Адключаны + Адкл. Ўключаны Ня прапаноўваць NSFW мангу Пачніце чытаць мангу, і вы атрымаеце персаналізаваныя прапановы @@ -469,7 +469,7 @@ Адключыць NSFW Занадта шмат запытаў. Паўтарыце спробу пазней Паказаць спіс звязанай мангі. У некаторых выпадках ён можа быць недакладным або адсутнічаць - Пашыраныя + Прасунутая Раздзел па змаўчанні Спіс мангі Вяртаюцца няправільныя дадзеныя ці файл пашкоджаны @@ -593,4 +593,5 @@ Каталог захавання старонкі па змаўчанні Выдаліць з гісторыі Захаванне старонак + Размяшчэнне \ No newline at end of file diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 5c4e8b07f..ded4a4988 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -206,7 +206,7 @@ Начните читать мангу, чтобы получать персональные предложения Не предлагать NSFW мангу Включено - Выключено + Выкл. Не удалось загрузить список жанров Вычисление… Сбросить фильтр @@ -469,7 +469,7 @@ Отключить NSFW Слишком много запросов. Попробуйте повторить позже Показывать список связанной манги. В некоторых случаях список может быть нерелевантным или отсутствовать вовсе - Расширенные + Продвинутая Раздел по умолчанию Список манги Возвращаются неверные данные или файл поврежден @@ -593,4 +593,5 @@ Убрать из истории Показывать подписи на панели навигации Папка для сохранений по умолчанию + Расположение \ No newline at end of file diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 73afd7678..78ae866c5 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -469,7 +469,7 @@ Вимкнути NSFW Показати список пов\'язаної манґи. У деяких випадках він може бути неточним або відсутнім Занадто багато запитів. Спробуйте пізніше - Розширені + Просунута Розділ за умовчанням Список манґи Повертаються неправильні дані або файл пошкоджено @@ -593,4 +593,5 @@ Видалити з історії Показувати мітки на панелі навігації Директорія збереження сторінки за замовчуванням + Розташування \ No newline at end of file From c0a2f0b53303903619943338f43e5ec60ea353df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=87=C4=B1nar?= Date: Wed, 28 Feb 2024 08:02:10 +0100 Subject: [PATCH 26/39] Translated using Weblate (Turkish) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 100.0% (597 of 597 strings) Co-authored-by: Çınar Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/tr/ Translation: Kotatsu/Strings --- app/src/main/res/values-tr/strings.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index d16754c6f..dd96b546e 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -578,10 +578,10 @@ Sonraki bölüm Önceki sayfa Sonraki sayfa - Ayarlar öntanımlı değerlere sıfırlansın mı? Bu eylem geri alınamaz. + Ayarlar varsayılan değerlere sıfırlansın mı? Bu eylem geri alınamaz. Yatay yönde iki sayfa düzeni kullan (beta) Devam etmek için e-posta adresinizi ve parolanızı girin - Öntanımlı webtoon uzaklaştırması + Varsayılan webtoon uzaklaştırması Tam ekran modu Sistem durumunu ve gezinme çubuklarını gizle Öneriler özelliği devre dışı @@ -591,6 +591,6 @@ Gezinme çubuğunda etiketleri göster Sayfalar kaydediliyor Her seferinde hedef dizini sor - Öntanımlı sayfa kaydetme dizini + Varsayılan sayfa kaydetme konumu Geçmişten kaldır \ No newline at end of file From d4684e7462cecceb27bc16dcd5b3dce61fd4719d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuz=20Ersen?= Date: Wed, 28 Feb 2024 08:02:11 +0100 Subject: [PATCH 27/39] Translated using Weblate (Turkish) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 100.0% (597 of 597 strings) Co-authored-by: Oğuz Ersen Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/tr/ Translation: Kotatsu/Strings --- app/src/main/res/values-tr/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index dd96b546e..a2afd2957 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -593,4 +593,5 @@ Her seferinde hedef dizini sor Varsayılan sayfa kaydetme konumu Geçmişten kaldır + Konum \ No newline at end of file From 5d75e9af4a6e0413bf9e8a70e75e5240fc2f8d34 Mon Sep 17 00:00:00 2001 From: gekka <1778962971@qq.com> Date: Wed, 28 Feb 2024 08:02:14 +0100 Subject: [PATCH 28/39] Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (597 of 597 strings) Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (597 of 597 strings) Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (597 of 597 strings) Co-authored-by: gekka <1778962971@qq.com> Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/zh_Hans/ Translation: Kotatsu/Strings --- app/src/main/res/values-zh-rCN/strings.xml | 81 +++++++++++----------- 1 file changed, 41 insertions(+), 40 deletions(-) diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 73328b103..37eda60b0 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -28,17 +28,17 @@ 开始验证 今天 清除 Cookies - 有新的可用图源 + 以下是新增的可用图源 根据你的喜好推荐漫画 所有数据都在本地分析,不会发送到其他地方。 从不 - 发送正在阅读漫画的更新通知 + 接收在读漫画的更新通知 R18 多语言 查找章节 排除分类 正在更新漫画推荐 - 检查新章节并通知结果 + 检查漫画新章节并接收通知 详情 卡片 网格 @@ -71,13 +71,13 @@ 最近更新 排序方式 筛选 - 主题 + 颜色模式 深色 浅色 跟随系统 页面 清除 - 确定永久清除所有阅读历史吗? + 确定永久清除所有阅读历史? 删除 已从本地存储中删除“%s” 保存图片 @@ -96,7 +96,7 @@ 网格大小 在%s上搜索 删除漫画 - 确定从设备中永久删除\"%s\"吗? + 确定从设备中永久删除\"%s\"? 阅读 翻页方式 音量键 @@ -132,7 +132,7 @@ 书架 最近 翻页动画 - 存储目录 + 选择存储目录 不可用 没有多余的存储空间 其他存储 @@ -144,11 +144,11 @@ 在读漫画的新章节将在这里显示 搜索结果 新版本: %s - 清除订阅更新记录 - 订阅更新已清除 + 清除漫画更新记录 + 更新记录已清除 旋转屏幕 开始更新 - 即将开始更新订阅 + 即将开始更新漫画 章节更新范围 不检查 输入密码 @@ -158,7 +158,7 @@ 重复密码 密码不一致 关于 - 版本 %s + 版本 (%s) 检查更新 已是最新版本 从右到左 @@ -174,9 +174,9 @@ 创建备份 恢复备份 恢复完成 - 清除订阅 - 确定要永久清除所有的更新历史吗? - 章节更新 + 清除更新 + 确定永久清除所有漫画更新记录? + 漫画更新 倒序 登录 登录后可查看此内容 @@ -185,7 +185,7 @@ 输入密码以解锁 确认 密码必须大于或等于4个字符 - 确定要永久清除所有搜索记录吗? + 确定永久清除所有搜索记录? 欢迎 备份已保存 不同设备及不同的系统调度可能会杀掉本应用的后台任务。 @@ -225,14 +225,14 @@ 此漫画没有章节 外观 输入不希望在推荐中看到的分类 - 确定从系统中永久删除所选项目吗? + 确定从设备中永久删除所选漫画? 删除成功 限速下载 有助于避免封禁你的IP地址 正在处理已保存漫画 章节将在后台被删除 隐藏 - 不会发送通知但新的章节将在列表中高亮显示 + 不会接收更新通知但新的章节将在漫画列表中高亮显示 开启通知 名称 编辑 @@ -247,10 +247,10 @@ 历史记录已删除 基于 HTTPS 的 DNS 默认阅读模式 - 自动检测阅读模式 - 自动检测是否应用条漫模式 + 自动检测条漫模式 + 阅读条漫时自动应用条漫模式 关闭电池优化 - 有助于进行后台更新检查 + 有助于检查更新的后台运行 出错了,请向开发人员提交错误报告以帮助修复问题。 发送 全部关闭 @@ -271,7 +271,7 @@ 标记为含有成人内容的漫画将不会添加到历史记录,也不会保存阅读记录 可帮助稍微解决部分问题,所有网站的授权将会失效 显示全部 - 错误详情:<br><tt>%1$s</tt><br><br>1.尝试<a href=%2$s>在网络浏览器中打开漫画</a>以确保在其图源中可用<br>2.请确保使用的是<a href=kotatsu://about>最新版本的Kotatsu</a><br>3.若图源没有问题,请向开发人员发送错误报告。 + 错误详情:<br><tt>%1$s</tt><br><br>1.尝试<a href=%2$s>在浏览器中打开漫画</a>确保漫画在图源中正常显示<br>2.确认正在使用的是<a href=kotatsu://about>最新版本的Kotatsu</a><br>3.若已排除以上问题,请向开发人员发送错误报告。 无效域名 此处将显示你的漫画 在<浏览>页面搜索想读的漫画 @@ -294,13 +294,13 @@ 暂无图源 开启一个图源即可在线阅读漫画 随机 - 确定要删除选中的分类吗? + 确定删除选中分类? \n该分类中的所有漫画将丢失且无法恢复。 重新排序 分类为空 浏览 - 自动滚动 - 阅读时显示状态信息 + 自动翻页 + 显示阅读状态 漫画压缩包 图片文件夹 漫画导入中 @@ -322,11 +322,11 @@ 导入完毕 可删除原文件节省存储空间 即将开始导入 - 订阅 + 更新 %s - %s 没有章节或已被删除 - 点击屏幕右侧边缘或按下右键都会翻到下一页 - 阅读简易操作 + 点击屏幕右侧边缘或按下右键总是翻到下一页 + 简易操作 长按应用图标显示最近阅读的漫画 显示最近阅读漫画的快捷方式 重置 @@ -354,7 +354,7 @@ 出于调试目的记录某些操作,若不知道有何用处请不要自行开启 显示可疑内容 动态 - 颜色方案 + 配色主题 切换为网格视图 Miku Asuka @@ -366,8 +366,8 @@ Kanade 这里什么也没有 要记录阅读进度,在漫画详情页里选中【菜单】→【进度记录】。 - 允许更新不稳定版本 - 接收不稳定版本的更新通知 + 允许更新至测试版本 + 接收测试版本的更新通知 下载已开始 UserAgent 标识 重启程序后更改 @@ -423,7 +423,7 @@ 允许在条漫模式下使用缩放手势 无效端口 没有权限访问该文件或目录 - 本地漫画目录 + 漫画本地目录 端口 %1$s (%2$s) 所有未读章节 @@ -487,7 +487,7 @@ 推荐新增图源 减少色带,但可能会影响性能 32位色彩模式 - 应用更新后提示开启新增图源 + 应用更新后推荐最近新增图源 每天一次 分类 备份频率 @@ -499,7 +499,7 @@ 每月两次 每月一次 上次备份成功:%s - 备份保存路径 + 备份保存目录 所有已翻译的章节 (%s) 即将推出 名称 (倒序) @@ -545,14 +545,14 @@ 休刊中 降低内存占用 (测试) 降低当前画面外的页面质量以减少内存占用 - 也许能帮助解决下载过程相关的问题 + 也许能帮助解决下载过程中的相关问题 此图源不支持搜索 状态 此图源不支持按多个分类筛选 此图源不支持按多个状态筛选 关联 标记为已读 - 确定将选定的漫画标记为已读吗? + 确定将选定漫画标记为已读? \n \n警告: 当前的阅读进度将会丢失。 此分类已从主页隐藏,可通过菜单 → 管理分类来访问 @@ -562,7 +562,7 @@ 第 %d 卷 未知卷 阅读进度不会保存 - 垂直 + 从上到下 最近阅读 使用音量键翻页 双页 @@ -579,18 +579,19 @@ 阅读操作 点按操作 横屏时开启双页模式 (测试) - 确定恢复为默认设置吗?恢复后无法撤销。 + 确定恢复为默认设置?恢复后无法撤销。 输入邮箱和密码以继续 全屏模式 条漫默认缩小值 将系统状态栏与通知栏隐藏 漫画推荐功能已被关闭 - 章节更新功能已被关闭 + 漫画更新功能已被关闭 在漫画详情页显示估计阅读时间 估计阅读时间可能会不准确 - 显示主页底部导航栏名称 - 保存时总是询问图片保存目录 + 显示底部导航栏名称 + 保存图片时总是询问保存目录 图片保存 图片默认保存目录 删除阅读历史 + 存储位置 \ No newline at end of file From 3a8eb58fd148a55b4b6204f0aa4f3a2801ffdc42 Mon Sep 17 00:00:00 2001 From: Lokmane Abdelhakim Djilani Date: Wed, 28 Feb 2024 08:02:16 +0100 Subject: [PATCH 29/39] Translated using Weblate (Arabic) Currently translated at 58.1% (347 of 597 strings) Co-authored-by: Lokmane Abdelhakim Djilani Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/ar/ Translation: Kotatsu/Strings --- app/src/main/res/values-ar/strings.xml | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index 3e5a38be5..a87d93f22 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -1,6 +1,6 @@ - تفاصيل القائمة + قائمة مفصلة حدث خطأ التفاصيل شبكة @@ -11,8 +11,8 @@ المفضلة ‌خطاء في الشبكة جار التحميل… - فصل %1$d في %2$d - غلق + فصل %1$d من %2$d + إغلاق حاول مجدداً جاري الحوسبة … التخزين المحلي @@ -28,9 +28,9 @@ الأحدث تقييم صفحات - اقرأ + إقرأ شارك - لم يتم عثور على اي شيء + لا شيء موجود لا مفضلة بعد بحث البحث في المانجا @@ -48,7 +48,7 @@ مسح ازالة شائع - أضف فئة جديدة + فئة جديدة تم التنزيل هل تريد محو سجل القراءة بالكامل بشكل دائم؟ احفظ الصفحة @@ -211,7 +211,7 @@ اكتشف تلقائيًا ما إذا كانت المانجا عبارة عن webtoon المانجا التي قرأتها مؤخرًا مظهر - حذف من المحفظة + حذف الإشارة المرجعية يساعد في فحص التحديثات في الخلفية تسجيل الدخول على %s غير مدعوم معلقَّة @@ -228,7 +228,7 @@ مزامنة بياناتك مانغا من المفضلة لديك إرسال - اضافة للمحفظة + اضافة إشارة مرجعية احظر دائما تتوفر مصادر مانغا جديدة مناسب للارتفاع @@ -338,4 +338,12 @@ يمكنك اختيار مكان في الذاكرة يحتوي على أرشيفات أو صور. سيتم التعرف على كل أرشيف (أو مجلد فرعي) على أنه فصل. السرعة استيراد نسخة احتياطية تم إنشاؤها لبيانات المستخدم. + الموجز + مؤشر إل إي دي + أرشيف القصص المصورة + استيراد المانجا + تم الإستيراد + يمكنك حذف الملف الأصلي من التخزين لتوفير مساحة + الإستيراد سيبدأ عن قريب + إظهار اختصارات المانجا الحديثة \ No newline at end of file From a84cf979826a3b0371cb855b669cf9e49b8c5183 Mon Sep 17 00:00:00 2001 From: gallegonovato Date: Wed, 28 Feb 2024 08:02:18 +0100 Subject: [PATCH 30/39] Translated using Weblate (Spanish) Currently translated at 100.0% (597 of 597 strings) Co-authored-by: gallegonovato Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/es/ Translation: Kotatsu/Strings --- app/src/main/res/values-es/strings.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 9a31abb36..0e0084050 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -328,7 +328,7 @@ Los ajustes de color elegidos serán recordados para este manga Fuente Mostrar los accesos directos a los mangas recientes - Navegar a continuación siempre te lleva a la página siguiente cuando utilizas el ratón y el teclado. + Tocando en el borde derecho, o pulsando la tecla derecha, se pasa siempre a la página siguiente. Control ergonómico del lector Corrección del color Brillo @@ -593,4 +593,5 @@ Eliminar del historial Guardar páginas Directorio predeterminado para guardar páginas + Ubicación \ No newline at end of file From a28c9447d75bbe4ebbec4e235c16a577125d8417 Mon Sep 17 00:00:00 2001 From: Anon Date: Wed, 28 Feb 2024 08:02:20 +0100 Subject: [PATCH 31/39] Translated using Weblate (Serbian) Currently translated at 100.0% (597 of 597 strings) Translated using Weblate (Serbian) Currently translated at 100.0% (9 of 9 strings) Co-authored-by: Anon Translate-URL: https://hosted.weblate.org/projects/kotatsu/plurals/sr/ Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/sr/ Translation: Kotatsu/Strings Translation: Kotatsu/plurals --- app/src/main/res/values-sr/plurals.xml | 4 ++-- app/src/main/res/values-sr/strings.xml | 22 ++++++++++++++-------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/app/src/main/res/values-sr/plurals.xml b/app/src/main/res/values-sr/plurals.xml index 29c252150..73ac19966 100644 --- a/app/src/main/res/values-sr/plurals.xml +++ b/app/src/main/res/values-sr/plurals.xml @@ -6,7 +6,7 @@ %1$d ставки - пре %1$d минута + пре %1$d минут пре %1$d минута пре %1$d минута @@ -26,7 +26,7 @@ %1$d нових поглавља - %1$d поглављe + %1$d поглавље %1$d поглавља %1$d поглавља diff --git a/app/src/main/res/values-sr/strings.xml b/app/src/main/res/values-sr/strings.xml index 162ea41d6..57e757df4 100644 --- a/app/src/main/res/values-sr/strings.xml +++ b/app/src/main/res/values-sr/strings.xml @@ -52,7 +52,7 @@ Звук обавештења Вибрација Овде је некако празно… - Анимација превлачења + Анимација превлачења странице О апликацији Верзија %s Црна @@ -118,7 +118,7 @@ Притисни дугмад за јачину звука Обавештења Кеш страница - Пронађите шта да читате у одељку „Преглед“ + Пронађи шта ћеш да читаш у одељку „Преглед“ Полица Провери ажурирања Новости @@ -127,13 +127,13 @@ Преглед Опције Додај у омиљене - Пронађите ствари за читање у одељку „Преглед“ - ЛЕД показатељ + Пронађи ствари за читање у одељку „Преглед“ + Показатељ ЛЕД светла Омиљене категорије - Избриши + Уклони Омогућено је %1$d од %2$d Избриши - Оно што прочитате биће приказано овде + Оно што прочиташ биће приказано овде Избриши Очишћено \"%s\" избрисано из локалне меморије @@ -418,7 +418,7 @@ Немаш приступ овој датотеци или директоријуму Манга означена за одрасле никада неће бити додата у историју и ваш напредак неће бити сачуван Означи као тренутно - Затражи лозинку када покрећете Котатсу + Затражи лозинку када покрећеш Kotatsu Са десна на лево Прикажи проценат читања у историји и омиљеним Насумично @@ -442,7 +442,7 @@ Рикка Онемогући Давно - Додиром на десну ивицу или притиском на десну стрелицу пребацује се на следећу страницу + Додиривање десне ивице, или притискање десне стрелице, увек прелази на следећу страницу. Режим без чувања Можеш направити обележивач док читаш мангу Мамими @@ -588,4 +588,10 @@ Вредност процене времена може бити нетачна Провера нових поглавља је искључена Режим целог екрана + Уклони из историје + Локација + Затражи одредишни дииректоријум сваки пут + Подразумевани директоријум за чување странице + Прикажи ознаке на навигационој траци + Чување страница \ No newline at end of file From 40f1ad3181eb919efe6ddebfdfd6eaf6454f9b01 Mon Sep 17 00:00:00 2001 From: Scrambled777 Date: Wed, 28 Feb 2024 08:02:22 +0100 Subject: [PATCH 32/39] Translated using Weblate (Hindi) Currently translated at 100.0% (597 of 597 strings) Co-authored-by: Scrambled777 Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/hi/ Translation: Kotatsu/Strings --- app/src/main/res/values-hi/strings.xml | 564 ++++++++++++++++++++++--- 1 file changed, 515 insertions(+), 49 deletions(-) diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml index 36d0581db..f6369ee08 100644 --- a/app/src/main/res/values-hi/strings.xml +++ b/app/src/main/res/values-hi/strings.xml @@ -6,15 +6,15 @@ अभी तक कोई इतिहास नहीं है पढ़ें इसे पसंद करें - जोड़ो - संचय करो + जोड़ें + सहेजें नवीनतम - उजाला - अँधेरा - बंद करो + हल्की + गहरी + बंद करे पुनः प्रयास करें अभी तक कोई पसंदीदा नहीं है - निकालो + हटाएँ नाम लोकप्रिय स्थानीय स्टॉरेज @@ -22,69 +22,69 @@ नेटवर्क समस्या पसंदीदा विस्तृत सूची - सेटिंग्स् - सूची रुपी + सेटिंग्स + सूची मोड अध्याय %1$d, %2$d में से गणना हो रही है… नई श्रेणी इतिहास मिटाए - भेजो + शेयर शॉर्टकट बनाएं… - %s भेजो - खोजो - मांगा खोजो + %s साझा करें + खोजें + मंगा खोजें डाउनलोड हो रहा है… - डाउनलोड किए गए मांगा + डाउनलोड्स रेटिंग साफ करें - पन्ना संचय हो गया - चित्र को भेजें + सहेजा गया + छवि साझा करें मिटाएं - पन्ने के कैछ को मिटाएं + पेज कैश साफ़ करें B|kB|MB|GB|TB सामान्य - वैबटून + Webtoon मांगा स्रोत डाउनलोड हो गया प्रक्रिया चल रही है… इतिहास ग्रिड लोड हो रहा है… - या तो झीप नहीं तो सीबीझेड फाईल को चुनें। + ZIP या CBZ मैं से एक फ़ाइल चुनें। अपडेट हो गया - \"%s\", स्थानीय स्टॉरेज में से मिट गईं + \"%s\" को स्थानीय स्टोरेज से हटा दिया गया पढ़ने का इतिहास सदा के लिए मिटाए\? - पन्ना संचय करो - आयात करें + पेज सहेजें + आयात यह कार्य समर्थित नहीं है - छंटाई क्रम + क्रमबद्धता क्रम सूची फिल्टर थीम - फोन जैसा + सिस्टम की पालन करें पन्ने कोई विवरण नहीं है अपडेट शेल्फ - «अन्वेषण» विभाग में जो भी आपको पढ़ना है उसे खोजे - सर्वे प्रिय - LED इंडिकेटर - पसंदिता केटेगरी + \"एक्सप्लोर करें\" अनुभाग में जानें कि क्या पढ़ना है + सभी पसंदीदा + LED सूचक + पसंदीदा श्रेणियां केवल जेस्चर थंबनेल कैच को साफ करे किनारे पर टैप - पेज को बदले - स्क्रीन गुमाए - «अन्वेषण» विभाग में जो भी पढ़ना है उसे खोजे - वैब्रेशन - निकालो + पन्नो को बदले + स्क्रीन घुमायें + \"एक्सप्लोर करें\" अनुभाग में जानें कि क्या पढ़ना है + कंपन + हटाएँ पढ़ने की विधि आंतरिक स्टोरेज बाद में पढ़े स्टोरेज उपलब्ध नहीं हैं %2$d में से %1$d आप जो पढ़ रहे हैं उसके नए अध्याय यहां दिखाए गए हैं - केटेगोरी खाली हैं + रिक्त श्रेणी डाउनलोड फ़ोल्डर साफ हो गया अपडेट @@ -92,40 +92,506 @@ इस ऐप का नया संस्करण उपलब्ध हैं नया संस्करण: %s डिवाइस से \"%s\" को स्थायी रूप से हटाएं? - जो भी आप पढ़ोगे वे सब यहां दिखेगा + आप जो पढ़ेंगे वह यहां प्रदर्शित किया जाएगा मंगा हटाएं सूचना की ध्वनि साफ हो गया - ब्राउसर में खोले + वेब ब्राउज़र में खोलें सूचनाएं उपल्ब्ध नहीं हैं - अपडेट के लिए देखे + अपडेट देखें खोजा हुवा इतिहास को साफ करे डाउनलोड - साइज: %s - आपके मांगा यहाँ दिखाई देंगे + आकार: %s + आपका मंगा यहां प्रदर्शित किया जाएगा नये अध्याय वॉल्यूम बटन - अपडेट्स फीड को साफ करे + अपडेट फ़ीड साफ़ करें सुचना के सेटिंग - क्षेत्र - जमा करो - इस मांगा में %s हैं। सबको जमा करे\? + डोमेन + सहेजें + इस मंगा में %s है। यह सब सहेजें? रीडर के सेटिंग - क्वेरी को पुनः बनाने का प्रयास करें। + क्वेरी को पुन: तैयार करने का प्रयास करें। त्रुटि ग्रिड का आकार जारी रखें - अभी के - %s पर खोजो + हालिया + %s पर खोजें खोज के परिणाम - पेज का एनीमेशन + पेज एनीमेशन अन्य स्टोरेज बाहरी स्टोरेज किसी ऑनलाइन कैटलॉग से कुछ सहेजें या किसी फ़ाइल से आयात करें। - पहले कुछ जमा करे - लगता है यहां तोह कुछ नहीं हैं… - होगाया + पहले कुछ सहेजें + यहाँ कुछ खाली सा है… + हो गया जाँच मत करो पासवर्ड दर्ज करें + विकसित + कैटलॉग + स्रोत प्रबंधित करें + स्क्रीनशॉट नीति + अनुमति दें + सुझाव + सुझाव सक्षम करें + अपनी प्राथमिकताओं के आधार पर मंगा का सुझाव दें + सभी डेटा का विश्लेषण केवल इस डिवाइस पर स्थानीय रूप से किया जाता है और कभी भी कहीं नहीं भेजा जाता है। + शैलियों की सूची लोड करने में असमर्थ + फ़िल्टर रीसेट करें + उन भाषाओं का चयन करें जिन्हें आप मंगा पढ़ना चाहते हैं। आप इसे बाद में सेटिंग में बदल सकते हैं। + इस मंगा में कोई अध्याय नहीं + शैलियों को छोड़ें + निष्कासन पूरा हुआ + आपके IP पते को ब्लॉक होने से बचाने में मदद करता है + सहेजे गए मंगा का प्रसंस्करण + अध्याय पृष्ठभूमि में हटा दिए जाएंगे + कॉमिक्स संग्रह + वेबटून ज़ूम + पासवर्ड दोहराएँ + बेमेल पासवर्ड + संस्करण %s + अपडेट के लिए जांचें + कोई अपडेट उपलब्ध नहीं + स्केल मोड + काली + AMOLED स्क्रीन पर कम पावर का उपयोग होता है + डेटा बैकअप बनाएं + बैकअप से पुनर्स्थापित करें + पुनर्स्थापित किया गया + डेटा पुनर्स्थापित कर दिया गया था, लेकिन त्रुटियाँ हैं + अभी + कल + बहुत पहले + समूह + आज + दोबारा प्रयास करने के लिए टैप करें + इस मंगा के लिए चुना गया कॉन्फ़िगरेशन याद रखा जाएगा + खामोश + CAPTCHA आवश्यक है + हल करें + सभी कुकीज़ हटा दी गईं + बैकअप सहेजा गया + स्वागत है + कुछ डिवाइसों में अलग-अलग सिस्टम व्यवहार होता है, जो पृष्ठभूमि कार्यों को बाधित कर सकता है। + और पढ़ें + अध्याय गायब है + इस ऐप का अनुवाद करें + अधिकृत + %s पर लॉग इन करना समर्थित नहीं है + आप सभी स्रोतों से लॉग आउट हो जायेंगे + समाप्त + चल रही है + डिफ़ॉल्ट + इतिहास से NSFW मंगा को बाहर करें + क्रमांकित पन्ने + प्रयुक्त स्रोत + उपलब्ध स्रोत + NSFW पर रोक लगाएं + हमेशा ब्लॉक करें + मंगा पढ़ना शुरू करें और आपको व्यक्तिगत सुझाव मिलेंगे + NSFW मंगा का सुझाव न दें + अक्षम + कभी नहीं + केवल Wi-Fi पर + हमेशा + 18+ + विभिन्न भाषाएँ + अध्याय खोजें + %1$s%% + दिखावट + पन्ने प्रीलोड करें + संपादित करें + धीमी गति से डाउनलोड करें + श्रेणी संपादित करें + ट्रैकिंग + कोई पसंदीदा श्रेणियां नहीं + लॉग आउट + बुकमार्क जोड़ें + बुकमार्क हटाएँ + बुकमार्क्स + बुकमार्क हटा दिया गया + बुकमार्क जोड़ा गया + पूर्ववत + इतिहास से हटा दिया गया + ऑटोडिटेक्ट रीडर मोड + स्वचालित रूप से पता लगाएं कि मंगा वेबटून है या नहीं + बैटरी अनुकूलन अक्षम करें + भेजें + सब अक्षम करें + यदि उपलब्ध हो तो फ़िंगरप्रिंट का उपयोग करें + आपके पसंदीदा में से मंगा + आपने हाल ही में पढ़ा मंगा + रिपोर्ट + योजना बनाई + पढ़ रहा हूँ + दोबारा पढ़ना + पूरा किया हुआ + होल्ड पर + गिरा दिया गया + पढ़ने की प्रगति संकेतक दिखाएँ + डेटा विलोपन + NSFW के रूप में चिह्नित मंगा को इतिहास में कभी नहीं जोड़ा जाएगा और आपकी प्रगति सहेजी नहीं जाएगी + कुछ समस्या होने पर मदद मिल सकती है. सभी प्राधिकरण अमान्य कर दिए जाएंगे + अमान्य डोमेन + रेंज चुनें + सारा इतिहास साफ़ करें + पिछले 2 घंटे + इतिहास साफ़ हो गया + प्रबंधित करें + अन्वेषण करें + बाहर निकलने के लिए फिर से वापस दबाएँ + बाहर निकलने की पुष्टि + सहेजा गया मंगा + पन्नो का कैश + अन्य कैश + उपलब्ध + %s - %s + पसंदीदा से हटाया गया + विकल्प + सामग्री नहीं मिली या हटाई गई + गुप्त मोड + Ch. %1$d/%2$d Pg. %3$d/%4$d + रीडर में सूचना पट्टी दिखाएं + छवियों वाला फ़ोल्डर + आयात पूरा हुआ + एप्लिकेशन आइकन पर लंबे समय तक दबाकर हालिया मंगा को उपलब्ध कराएं + एर्गोनोमिक रीडर नियंत्रण + रंग सुधार + चमक + स्टोरेज उपयोग + कंट्रास्ट + रीसेट + इस मंगा के लिए चुनी गई रंग सेटिंग्स याद रखी जाएंगी + सहेजे न गए परिवर्तन सहेजें या हटाएँ? + डिवाइस पर जगह समाप्त + पेज स्विचिंग स्लाइडर दिखाएँ + विभिन्न भाषाएं + नेटवर्क उपलब्ध नहीं है + सर्वर साइड त्रुटि (%1$d). कृपया बाद में पुन: प्रयास करें + नए अध्यायों के बारे में भी स्पष्ट जानकारी + सघन + वर्तमान के रूप में चिह्नित करें + भाषा + लॉगिंग सक्षम करें + संदिग्ध सामग्री दिखाएं + गतिशील + रंग योजना + ग्रिड दृश्य में दिखाएँ + Miku + Rikka + Kanade + पढ़ने की प्रगति को ट्रैक करने के लिए, मंगा विवरण स्क्रीन पर मेनू → ट्रैक का चयन करें। + सेवाएं + कृपया इन परिवर्तनों को लागू करने के लिए एप्लिकेशन को पुनः आरंभ करें + आप एक या अधिक .cbz या .zip फ़ाइलों का चयन कर सकते हैं, प्रत्येक फ़ाइल को एक अलग मंगा के रूप में पहचाना जाएगा। + UserAgent हेडर + गति + उपयोगकर्ता डेटा का पहले से बनाया गया बैकअप आयात करें + शेल्फ पर दिखाएँ + आप किसी मौजूदा खाते में साइन इन कर सकते हैं या एक नया खाता बना सकते हैं + यदि मिरर उपलब्ध हैं तो त्रुटियों पर मंगा स्रोतों के लिए स्वचालित रूप से डोमेन स्विच करें + समान खोजें + विराम + फिर से शुरू करें + रुका हुआ + सभी रद्द करें + स्वचालित रूप से मिरर चुनें + मोबाइल नेटवर्क पर स्विच करते समय डाउनलोड करना बंद कर दें + सुझाव: %s + कभी-कभी सुझाए गए मंगा के साथ सूचनाएं दिखाएं + अधिक + सक्षम + जी नहीं, धन्यवाद + सभी सक्रिय डाउनलोड रद्द कर दिए जाएंगे, आंशिक रूप से डाउनलोड किया गया डेटा खो जाएगा + आपका डाउनलोड इतिहास स्थायी रूप से हटा दिया जाएगा + आपके पास कोई डाउनलोड नहीं है + डाउनलोड फिर से शुरू कर दिए गए हैं + डाउनलोड रोक दिए गए हैं + डाउनलोड हटा दिए गए हैं + क्या आप वैयक्तिकृत मंगा सुझाव प्राप्त करना चाहते हैं? + WebView उपलब्ध नहीं है: जांचें कि WebView प्रदाता स्थापित है या नहीं + नेटवर्क कैश साफ़ करें + प्रकार + पता + पोर्ट + प्रॉक्सी + अमान्य मान + %1$s (%2$s) + पासवर्ड + रंगों को उलटा करें + अमान्य पोर्ट नंबर + नेटवर्क + एनिमेट पेज स्विचिंग + निचले कोने में पेज संख्याएँ दिखाएँ + पहले बनाए गए बैकअप को पुनर्स्थापित करें + वेबटून मोड में ज़ूम इन जेस्चर की अनुमति दें + स्क्रीन के शीर्ष पर वर्तमान समय और पढ़ने की प्रगति दिखाएं + वॉल्यूम %d + अज्ञात वॉल्यूम + यदि आपको सर्वर-साइड ब्लॉकिंग की समस्या हो रही है तो आप स्रोत सेटिंग्स में प्रत्येक मंगा स्रोत के लिए व्यक्तिगत रूप से डाउनलोड मंदी को सक्षम कर सकते हैं + अनुमानित पढ़ने का समय + इतिहास से हटा दें + अनुवाद + छोड़ें + आपकी पढ़ने की प्रगति सहेजी नहीं जाएगी + सामग्री मूल्यांकन + शैलियों को छोड़ें + सुरक्षित + वयस्क + सुझावात्मक + अंतिम पढ़ा + लॉक स्क्रीन रोटेशन + लंबवत + डाउनलोड प्रारंभ हुआ + मंगा सूची + NSFW अक्षम करें + छवियाँ अनुकूलन प्रॉक्सी + डेटा और गोपनीयता + जारी रखने के लिए अपना ईमेल और पासवर्ड डालें + केवल निर्दिष्ट डोमेन के लिए कुकीज़ साफ़ करें। अधिकांश मामलों में प्राधिकरण अमान्य हो जाएगा + अधिक विकल्प देखने के लिए पढ़ें बटन को दबाकर रखें + अगला अपठित %s + आपके पास इस फ़ाइल या डॉयरेक्टरी तक कोई पहुंच नहीं है + ध्वनि खोज + संबंधित मंगा + विवरण + इस महीने + पृष्ठभूमि + स्थानीय मंगा डॉयरेक्टरी + सुनिश्चित करें कि आपने सही बैकअप फ़ाइल का चयन किया है + डेटा पुनर्स्थापित नहीं किया गया + मीटर्ड नेटवर्क कनेक्शन का उपयोग करके सुझावों को अपडेट न करें + मीटर्ड नेटवर्क कनेक्शन का उपयोग करके नए अध्यायों की जाँच न करें + मंगा शीर्षक, शैली या स्रोत का नाम दर्ज करें + प्रगति + जोड़ा गया + दिखाएँ + भाषाएं + अज्ञात + प्रगति पर है + अमान्य डेटा लौटाया गया है या फ़ाइल दूषित है + कोई और आइटम नहीं जोड़ा जा सकता + डिवाइस पर + मुख्य स्क्रीन अनुभाग + डॉयरेक्टरी + शीर्ष पर + शीर्ष पर ले जाया गया + ज़ूम आउट + ज़ूम इन + ज़ूम बटन दिखाएँ + निचले दाएं कोने में ज़ूम नियंत्रण बटन दिखाना है या नहीं + स्क्रीन चालू रखें + जब आप मंगा पढ़ रहे हों तो स्क्रीन बंद न करें + बैंडिंग को कम करता है, लेकिन प्रदर्शन को प्रभावित कर सकता है + 32-बिट रंग मोड + ऐप अपडेट के बाद नए स्रोत सुझाएं + एप्लिकेशन को अपडेट करने के बाद नए जोड़े गए स्रोतों को सक्षम करने का संकेत दें + ऑनलाइन संस्करण + आवधिक बैकअप + बैकअप निर्माण आवृत्ति + प्रतिदिन + हर हफ्ते एक बार + प्रति माह दो बार + प्रति महीना एक बार + हर 2 दिन में + आवधिक बैकअप सक्षम करें + बैकअप आउटपुट डायरेक्टरी + अंतिम सफल बैकअप: %s + x%.1f + मंगा + हेंताई + कॉमिक्स + %1$s, %2$s + अन्य + स्रोत सक्षम + स्रोत कैटलॉग + इस अनुभाग में कोई स्रोत उपलब्ध नहीं है, या यह सब पहले ही जोड़ा जा चुका होगा। +\nबने रहें + आपकी क्वेरी से कोई उपलब्ध मंगा स्रोत नहीं मिला + मैन्युअल + उपलब्ध: %1$d + यदि संभव हो तो NSFW स्रोतों को अक्षम करें और वयस्क मंगा को सूची से छिपाएँ + रोके गए + मेमोरी खपत कम करें (beta) + अवस्था + अनेक शैलियों द्वारा फ़िल्टर करना इस मंगा स्रोत द्वारा समर्थित नहीं है + खोज इस मंगा स्रोत द्वारा समर्थित नहीं है + शैली का नाम लिखना प्रारंभ करें + यदि आपको इसमें कोई समस्या है तो डाउनलोड शुरू करने में मदद मिल सकती है + पुनर्स्थापित करें + बैकअप दिनांक: %s + आगामी + नाम उलटा + पूर्ण के रूप में चिह्नित करें + चयनित मंगा को पूरी तरह से पढ़ा गया के रूप में चिह्नित करें? +\n +\nचेतावनी: वर्तमान पठन प्रगति नष्ट हो जाएगी। + अनुमानित समय शेष है + %1$s %2$s + दो पन्ने + मेन्यू दिखाएँ + लंबे टैप पर कार्रवाई + टैप पर कार्रवाई + कोई नहीं + सेटिंग्स को डिफ़ॉल्ट मानों पर रीसेट करें? इस एक्शन को वापस नहीं किया जा सकता। + लैंडस्केप ओरिएंटेशन पर दो पेज लेआउट का उपयोग करें (beta) + समझ गया + डिफ़ॉल्ट टैब + अनुवाद सहित सभी अध्याय %s + संपूर्ण मंगा + प्रथम %s + सभी अपठित अध्याय + सभी अपठित अध्याय (%s) + अध्यायों का चयन मैन्युअल रूप से करें + हल्का + गहरा + सफ़ेद + काला + सूची देखें + श्रेणी व्यवस्थित करें + डाउनलोड किया गया + बहुत सारे अनुरोध. बाद में पुन: प्रयास + संबंधित मंगा की एक सूची दिखाएं. कुछ मामलों में यह ग़लत या गायब हो सकता है + कस्टम डायरेक्टरी + कस्टम डायरेक्टरी चुनें + डिफ़ॉल्ट वेबटून ज़ूम आउट + %s को ठीक से काम करने के लिए कैप्चा को हल करने की आवश्यकता है + पूर्ण स्क्रीन मोड + सिस्टम स्थिति और नेविगेशन बार छिपाएँ + उपयोक्तानाम + प्राधिकरण (वैकल्पिक) + यह श्रेणी मुख्य स्क्रीन से छिपी हुई थी और मेनू → श्रेणियों को प्रबंधित करें के माध्यम से पहुंच योग्य है + वैश्विक स्तर पर + ग्रेस्केल + लागू करें + SSL त्रुटियों को नजरअंदाज करें + केवल Wi-Fi के ज़रिए डाउनलोड करें + आपको सूचनाएं प्राप्त नहीं होंगी लेकिन नए अध्याय सूचियों में हाइलाइट किए जाएंगे + सूचनाएं सक्षम करें + नाम + बुकमार्क हटा दिए गए + कोई मंगा स्रोत नहीं + मंगा को ऑनलाइन पढ़ने के लिए मंगा स्रोतों को सक्षम करें + यादृच्छिक + पुन: व्यवस्थित करें + खाली + आयात जल्द शुरू होगा + फ़ीड + हाल के मंगा शॉर्टकट दिखाएँ + खारिज + किसी आइटम को पुन: व्यवस्थित करने के लिए उस पर टैप करके रखें + गलत पासवर्ड + ऐप को सुरक्षित रखें + Kotatsu शुरू करते समय पासवर्ड मांगें + दाएं-से-बाएं + नई श्रेणी + केंद्र फिट + ऊंचाई के अनुरूप + चौड़ाई के अनुरूप + प्रारंभ में रखें + कूकीज साफ़ करें + फ़ीड साफ़ करें + सभी अपडेट इतिहास स्थायी रूप से साफ़ करें? + नए अध्यायों की जाँच करें + उलटा + साइन इन + रद्द किया गया + खाता पहले से मौजूद है + पीछे + सिंक्रनाइज़ेशन + अपना डेटा सिंक करें + जारी रखने के लिए अपना ईमेल दर्ज करें + छुपाएं + नए मंगा स्रोत उपलब्ध हैं + नए अध्यायों की जाँच करें और इसके बारे में सूचित करें + पूर्ण हटा दें + UI दिखाएँ/छिपाएँ + अगला अध्याय + पाठक क्रियाएँ + वॉल्यूम बटन सक्षम करें + अगला पेज + पढ़ने का अनुमानित समय दिखाएँ + समय अनुमान मान ग़लत हो सकता है + जगह + कतारबद्ध + अनुवाद + सक्रिय + इस सामग्री को देखने के लिए साइन इन करें + डिफ़ॉल्ट: %s + अगला + शैलियां + %s के रूप में लॉग इन किया गया + ऐप शुरू करने के लिए एक पासवर्ड दर्ज करें + सुझाव अपडेट हो रहे हैं + पुष्टि करें + वे शैलियाँ निर्दिष्ट करें जिन्हें आप सुझावों में नहीं देखना चाहते + पासवर्ड 4 अक्षर या अधिक का होना चाहिए + डिवाइस से चयनित आइटम स्थायी रूप से हटाएं? + हाल की सभी खोज क्वेरी को स्थायी रूप से हटा दें? + बारे में + बैकअप और पुनर्स्थापना + तैयार कर रहे हैं… + फाइल नहीं मिली + सारा डेटा पुनर्स्थापित कर दिया गया + आप अपने इतिहास और पसंदीदा का बैकअप बना सकते हैं और उसे पुनर्स्थापित कर सकते हैं + आप जो मंगा पढ़ रहे हैं उसके अपडेट के बारे में आपको सूचनाएं प्राप्त होंगी + HTTPS पर DNS + डिफ़ॉल्ट मोड + बैकग्राउंड अपडेट जांच में मदद करता है + कुछ गलत हो गया। कृपया इसे ठीक करने में हमारी सहायता के लिए डेवलपर्स को एक बग रिपोर्ट सबमिट करें। + इतिहास और पसंदीदा में पढ़ा गया प्रतिशत दिखाएँ + सब दिखाएं + डाउनलोड रद्द कर दिए गए हैं + डिफ़ॉल्ट अनुभाग + अभी तक कोई बुकमार्क नहीं + आप मंगा पढ़ते समय बुकमार्क बना सकते हैं + सिंक्रोनाइज़ेशन सेटिंग्स + ऐप से बाहर निकलने के लिए बैक को दो बार दबाएँ + सर्वर पता + आप स्व-होस्टेड सिंक्रनाइज़ेशन सर्वर या डिफ़ॉल्ट सर्वर का उपयोग कर सकते हैं। यदि आप निश्चित नहीं हैं कि आप क्या कर रहे हैं तो इसे न बदलें। + कोई अध्याय नहीं + स्वचालित स्क्रॉल + मंगा आयात किया जा रहा है + स्थान बचाने के लिए आप मूल फ़ाइल को स्टोरेज से हटा सकते हैं + मंगा को ऑनलाइन पढ़ने के लिए Wi-Fi या मोबाइल नेटवर्क चालू करें + स्रोत अक्षम किया गया + सामग्री प्रीलोड हो रही है + लॉग साझा करें + डिबग उद्देश्यों के लिए कुछ क्रियाएँ रिकॉर्ड करें। यदि आप निश्चित नहीं हैं कि आप क्या कर रहे हैं तो इसे चालू न करें + Asuka + Mion + Sakura + Mamimi + अस्थिर अपडेट की अनुमति दें + यहां कुछ नहीं है + अस्थिर बिल्ड के बारे में सूचनाएं प्राप्त करें + क्या आप वाकई चयनित पसंदीदा श्रेणियां हटाना चाहते हैं? +\nइसमें मौजूद सारा मंगा नष्ट हो जाएगा और इसे पूर्ववत नहीं किया जा सकता। + त्रुटि विवरण:<br><tt>%1$s</tt><br><br>1. यह सुनिश्चित करने के लिए कि यह अपने स्रोत पर उपलब्ध है <a href=%2$s>मंगा को वेब ब्राउज़र में खोलने का प्रयास करें</a><br>2। सुनिश्चित करें कि आप <a href=kotatsu://about>Kotatsu के नवीनतम संस्करण</a><br>3 का उपयोग कर रहे हैं। यदि यह उपलब्ध है, तो डेवलपर्स को एक त्रुटि रिपोर्ट भेजें। + आप अभिलेखों या छवियों वाली एक डॉयरेक्टरी का चयन कर सकते हैं। प्रत्येक संग्रह (या उपडॉयरेक्टरी) को एक अध्याय के रूप में पहचाना जाएगा। + यदि संभव हो तो ट्रैफ़िक उपयोग को कम करने और छवि लोडिंग को तेज़ करने के लिए wsrv.nl सेवा का उपयोग करें + गिरा दिया गया + विकल्पों की सूची बनाएं + प्रासंगिकता + श्रेणियाँ + कम मेमोरी का उपयोग करने के लिए ऑफस्क्रीन पन्नो की गुणवत्ता कम करें + एकाधिक राज्यों द्वारा फ़िल्टर करना इस मंगा स्रोत द्वारा समर्थित नहीं है + ये सेटिंग्स विश्व स्तर पर या केवल वर्तमान मंगा पर लागू की जा सकती हैं। यदि विश्व स्तर पर लागू किया जाता है, तो व्यक्तिगत सेटिंग्स को ओवरराइड नहीं किया जाएगा। + यह मंगा + शैलियों और स्थान दोनों के आधार पर फ़िल्टर करना इस स्रोत द्वारा समर्थित नहीं है + कृपया चुनें कि आप कौन से सामग्री स्रोत सक्षम करना चाहते हैं। इसे बाद में सेटिंग्स में भी कॉन्फ़िगर किया जा सकता है + खाता सिंक करने के लिए लॉगिन करें + शैलियों और राज्यों दोनों द्वारा फ़िल्टर करना इस स्रोत द्वारा समर्थित नहीं है + पिछला अध्याय + डिफॉल्ट पेज सेव डायरेक्टरी + टैप करने योग्य स्क्रीन क्षेत्रों के लिए क्रियाएँ कॉन्फ़िगर करें + दाएँ किनारे पर टैप करने या दाएँ कुंजी दबाने से हमेशा अगले पेज पर स्विच हो जाता है। + पिछला पेज + पन्ने बदलने के लिए वॉल्यूम बटन का उपयोग करें + सुझाव सुविधा अक्षम है + नए अध्यायों की जाँच अक्षम है + नेविगेशन बार में लेबल दिखाएँ + पन्ने सहेजा जा रहा है + हर बार गंतव्य स्थान के लिए पूछें \ No newline at end of file From 7d7a6eadd2c2fba252b5090bf0578102614ad83f Mon Sep 17 00:00:00 2001 From: Kyoya Date: Wed, 28 Feb 2024 08:02:24 +0100 Subject: [PATCH 33/39] Translated using Weblate (Turkish) Currently translated at 100.0% (597 of 597 strings) Co-authored-by: Kyoya Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/tr/ Translation: Kotatsu/Strings --- app/src/main/res/values-tr/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index a2afd2957..a3ffcc8eb 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -331,7 +331,7 @@ Kontrast Sıfırla Seçilen renk ayarları bu manga için hatırlanacaktır - Kaydedilmeyen değişiklikler kaydedilsin mi? + Kaydedilmeyen değişiklikler kaydedilsin mi yoksa yok mu sayılsın? Yoksay Cihazda yer yok Webtoon yakınlaştırma From 8f65ea65353f73203f34d1637136bcbf269c7917 Mon Sep 17 00:00:00 2001 From: Infy's Tagalog Translations Date: Wed, 28 Feb 2024 08:02:25 +0100 Subject: [PATCH 34/39] Translated using Weblate (Filipino) Currently translated at 99.8% (596 of 597 strings) Co-authored-by: Infy's Tagalog Translations Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/fil/ Translation: Kotatsu/Strings --- app/src/main/res/values-fil/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/res/values-fil/strings.xml b/app/src/main/res/values-fil/strings.xml index 950153174..d4f10816c 100644 --- a/app/src/main/res/values-fil/strings.xml +++ b/app/src/main/res/values-fil/strings.xml @@ -593,4 +593,5 @@ Naka-disable ang pagsuri para sa mga bagong kabanata Ipakita ang tinantyang oras ng pagbabasa Maaaring hindi tumpak ang halaga ng pagtatantya ng oras + Lokasyon \ No newline at end of file From 52272404784bfb349656b2b4f02646ec7167f7b3 Mon Sep 17 00:00:00 2001 From: a Date: Wed, 28 Feb 2024 08:02:26 +0100 Subject: [PATCH 35/39] Translated using Weblate (Portuguese) Currently translated at 100.0% (597 of 597 strings) Co-authored-by: a Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/pt/ Translation: Kotatsu/Strings --- app/src/main/res/values-pt/strings.xml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index fdc4c6169..765b2aa24 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -343,7 +343,7 @@ A importação começará em breve Fluxo Detalhes do erro:<br><tt>%1$s</tt><br><br>1. Tente <a href=%2$s>abra a página do mangá em um navegador da web</a> para garantir que o mesmo esteja disponível em sua fonte<br>2. Se estiver disponível, envie um relatório de erro para os desenvolvedores. - Tocar na borda direita ou pressionar a tecla direita sempre muda para a próxima página + Tocar na borda direita ou pressionar a tecla direita, sempre muda para a próxima página. Controle ergonômico do leitor As configurações de cores escolhidas serão lembradas para este mangá Descartar @@ -588,4 +588,10 @@ A verificação de novos capítulos está desativada Mostrar tempo estimado de leitura O valor do tempo estimado pode ser impreciso + Remover do histórico + Mostrar rótulos na barra de navegação + Diretório de salvamento de página padrão + Localização + Salvando páginas + Sempre pedir diretório de destinação \ No newline at end of file From d6b8e2fd9e53273c625b542fe6b13a291a9a6645 Mon Sep 17 00:00:00 2001 From: abc0922001 Date: Wed, 28 Feb 2024 08:02:27 +0100 Subject: [PATCH 36/39] Translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (597 of 597 strings) Co-authored-by: abc0922001 Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/zh_Hant/ Translation: Kotatsu/Strings --- app/src/main/res/values-zh-rTW/strings.xml | 32 +++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 71e9e85c1..eddbe008f 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -34,7 +34,7 @@ 在歷史紀錄與最愛中顯示閱讀百分比 再點擊一次返回鍵以退出 本機儲存區 - 輕觸右邊緣或按右鍵總是切換到下一頁 + 點擊右側邊緣或按下右鍵,總是切換到下一頁。 儲存或放棄未儲存的變更? 您可以從儲存區中刪除原始檔案以節省空間 最愛 @@ -564,4 +564,34 @@ 減少色帶,但可能會影響效能 大約剩餘時間 %1$s %2$s + 從歷史記錄中移除 + 請輸入您的電子郵件和密碼以繼續 + 雙頁 + 重置設定為預設值?此動作無法撤銷。 + 在橫向模式下使用雙頁佈局(測試版) + 預設網頁漫畫縮小 + 全螢幕模式 + 隱藏系統狀態欄和導航欄 + 顯示選單 + 前一個章節 + 前一頁 + 下一頁 + 顯示/隱藏介面 + + 閱讀器動作 + 啟用音量鍵 + 使用音量鍵來翻頁 + 長按動作 + 建議功能已禁用 + 檢查新章節功能已禁用 + 顯示預估閱讀時間 + 預估時間值可能不準確 + 位置 + 下一個章節 + 設定可點擊螢幕區域的動作 + 點擊動作 + 在導航欄顯示標籤 + 正在儲存頁面 + 每次都詢問目的地目錄 + 預設頁面儲存目錄 \ No newline at end of file From f6de1b02d76c201f1b6cf2e64cc9e35d85347957 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Wed, 28 Feb 2024 14:06:08 +0200 Subject: [PATCH 37/39] Fix download item ui --- app/src/main/res/layout/item_download.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/layout/item_download.xml b/app/src/main/res/layout/item_download.xml index 7743b2c19..0c5b27ce4 100644 --- a/app/src/main/res/layout/item_download.xml +++ b/app/src/main/res/layout/item_download.xml @@ -61,7 +61,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" app:barrierDirection="bottom" - app:constraint_referenced_ids="imageView_cover,textView_status,imageView_expand" /> + app:constraint_referenced_ids="imageView_cover,textView_status,imageView_expand,textView_details" /> + tools:text="@tools:sample/lorem[10]" />