diff --git a/README.md b/README.md
index af329546e..cf4dda8a3 100644
--- a/README.md
+++ b/README.md
@@ -1,19 +1,21 @@
-# Kazumi
+# Akiora
[](https://t.me/kazumi_app)
-使用 Flutter 开发的基于自定义规则的番剧采集与在线观看程序。使用最多五行基于 `Xpath` 语法的选择器构建自己的规则。支持规则导入与规则分享。支持基于 `Anime4K` 的实时超分辨率。绝赞开发中 (~ ̄▽ ̄)~
+A Flutter-based anime indexing and online streaming app driven by user-defined rules. Build your own rules with selectors written in `Xpath` syntax (up to five lines). Supports importing and sharing rules, plus real-time super-resolution powered by `Anime4K`. Heavy development in progress (~ ̄▽ ̄)~
-## 支持平台
+> Akiora is a renamed/customized build of the upstream [Kazumi](https://github.com/Predidit/Kazumi) project. The package name, F-Droid/Flathub IDs, AUR packages, Telegram group, and release-asset URLs below still point to the upstream Kazumi project where the binaries are actually hosted.
-- Android 10 及以上
-- Windows 10 及以上
-- MacOS 10.15 及以上
-- Linux (实验性)
-- iOS 13 及以上 (需要[自签名](https://kazumi.app/docs/misc/how-to-install-in-ios.html))
-- HarmonyOS 5.0 及以上 (位于[分支仓库](https://github.com/ErBWs/Kazumi/releases/latest),需要[侧载](https://kazumi.app/docs/misc/how-to-install-in-ohos.html))
+## Supported platforms
-## 屏幕截图
+- Android 10 and later
+- Windows 10 and later
+- macOS 10.15 and later
+- Linux (experimental)
+- iOS 13 and later (requires [self-signing](https://kazumi.app/docs/misc/how-to-install-in-ios.html))
+- HarmonyOS 5.0 and later (lives in a [fork repository](https://github.com/ErBWs/Kazumi/releases/latest), requires [sideloading](https://kazumi.app/docs/misc/how-to-install-in-ohos.html))
+
+## Screenshots
-## 功能 / 开发计划
-
-- [x] 规则编辑器
-- [x] 番剧目录
-- [x] 番剧搜索
-- [x] 番剧时间表
-- [x] 番剧字幕
-- [x] 分集播放
-- [x] 视频播放器
-- [x] 多视频源支持
-- [x] 规则分享
-- [x] 硬件加速
-- [x] 高刷适配
-- [x] 追番列表
-- [x] 番剧弹幕
-- [x] 在线更新
-- [x] 历史记录
-- [x] 倍速播放
-- [x] 配色方案
-- [x] 跨设备同步
-- [x] 无线投屏 (DLNA)
-- [x] 外部播放器播放
-- [x] 超分辨率
-- [x] 一起看
-- [x] 番剧下载
-- [ ] 番剧更新提醒
-- [ ] 还有更多 (/・ω・\)
-
-## 下载
-
-通过本页面 [releases](https://github.com/Predidit/Kazumi/releases) 选项卡下载:
+## Features / Roadmap
+
+- [x] Rule editor
+- [x] Anime catalog
+- [x] Anime search
+- [x] Broadcast schedule
+- [x] Anime metadata / details
+- [x] Episode playback
+- [x] Built-in video player
+- [x] Multiple video-source support
+- [x] Rule sharing
+- [x] Hardware acceleration
+- [x] High-refresh-rate support
+- [x] Tracking / watchlist
+- [x] Danmaku (bullet comments)
+- [x] In-app updates
+- [x] Watch history
+- [x] Variable playback speed
+- [x] Color schemes
+- [x] Cross-device sync
+- [x] Wireless casting (DLNA)
+- [x] Playback via external players
+- [x] Super-resolution
+- [x] Watch Together
+- [x] Anime downloads
+- [ ] New-episode notifications
+- [ ] More to come (/・ω・\)
+
+## Download
+
+Download from the [releases](https://github.com/Predidit/Kazumi/releases) tab on this page:
@@ -79,13 +81,13 @@
#### Arch Linux
-可以从 [AUR](http://aur.archlinux.org) 或 [archlinuxcn](https://github.com/archlinuxcn/repo) 安装。
+Available from [AUR](http://aur.archlinux.org) or [archlinuxcn](https://github.com/archlinuxcn/repo).
##### AUR
```bash
-[yay/paru] -S kazumi # 从源码构建
-[yay/paru] -S kazumi-bin # 二进制包
+[yay/paru] -S kazumi # build from source
+[yay/paru] -S kazumi-bin # binary package
```
##### archlinuxcn
@@ -94,103 +96,101 @@
sudo pacman -S kazumi
```
-## 贡献
+## Contributing
-欢迎向我们的 [规则仓库](https://github.com/Predidit/KazumiRules) 提交您的自定义规则。您可以自由选择是否在规则中留下您的ID
+You are welcome to submit your custom rules to our [rules repository](https://github.com/Predidit/KazumiRules). You may freely choose whether or not to leave your ID in your rule.
## Q&A
-使用者 Q&A
+End-user Q&A
-#### Q: 为什么少数番剧中有广告?
+#### Q: Why are there ads in some anime?
-A: 本项目未插入任何广告。广告来自视频源, 请不要相信广告中的任何内容, 并尽量选择没有广告的视频源观看。
+A: This project does not insert any ads. Ads come from the video source. Please do not trust anything in the ads, and prefer video sources without ads when possible.
-#### Q: 为什么我启用超分辨率功能后播放卡顿?
+#### Q: Why does playback stutter when I enable super-resolution?
-A: 超分辨率功能对 GPU 性能要求较高, 如果没有在高性能独立显卡上运行 Kazumi, 尽量选择效率档而非质量档。对低分辨率视频源而非高分辨率视频源使用超分也可以降低性能消耗。
+A: Super-resolution is GPU-intensive. If you are not running Akiora on a high-performance discrete GPU, prefer the performance mode over the quality mode. Using super-resolution on low-resolution video sources rather than high-resolution ones also reduces the performance cost.
-#### Q: 为什么播放视频时内存占用较高?
+#### Q: Why is memory usage high during video playback?
-A: 本程序在视频播放时, 会尽可能多地缓存视频到内存, 以提供较好的观看体验。如果您的内存较为紧张, 可以在播放设置选项卡启用低内存模式, 这将限制缓存。
+A: During playback the app caches as much of the video into memory as possible to provide a smoother viewing experience. If memory is tight, you can enable Low Memory Mode in the playback settings tab to limit the cache.
-#### Q: 为什么少数番剧无法通过外部播放器观看?
+#### Q: Why can a few anime not be played in an external player?
-A: 部分视频源的番剧使用了反盗链措施, 这可以被 Kazumi 解决, 但无法被外部播放器解决。
+A: Some video sources use anti-hotlinking measures. Akiora can work around them, but external players cannot.
-#### Q: 为什么下载的 Linux 版本缺少图标和托盘功能?
+#### Q: Why is the Linux build I downloaded missing icons and tray support?
-A: 使用 .deb 版本进行安装, tar.gz 版本仅为方便二次打包, 这一格式先天缺乏图标和托盘功能支持。
+A: Install using the `.deb` package; the `.tar.gz` is only intended to make repackaging easier and inherently lacks icon and tray support.
-规则编写者 Q&A
+Rule-author Q&A
-#### Q: 为什么我的自定义规则无法实现检索?
+#### Q: Why does my custom rule fail to perform searches?
-A: 目前我们对 `Xpath` 语法的支持并不完整, 我们目前只支持以 `//` 开头的选择器。建议参照我们给出的示例规则构建自定义规则。
+A: Our `Xpath` support is currently incomplete; only selectors starting with `//` are supported. We recommend using the example rules we provide as a template for your own.
-#### Q: 为什么我的自定义规则可以实现检索, 但不能实现观看?
+#### Q: My custom rule can search but cannot play. Why?
-A: 尝试关闭自定义规则的使用内置播放器选项, 这将尝试使用 `webview` 进行播放, 提高兼容性。但在内置播放器可用时, 建议启用内置播放器, 以获得更加流畅并带有弹幕的观看体验。
+A: Try disabling "Use built-in player" on the custom rule; this falls back to `webview` for playback and improves compatibility. When the built-in player works, however, prefer it for smoother playback and danmaku support.
-开发者 Q&A
+Developer Q&A
-#### Q: 我在尝试自行编译该项目, 但编译没有成功。
+#### Q: I'm trying to build the project myself but the build fails.
-A: 本项目编译需要良好的网络环境, 除了由 Google 托管的 Flutter 相关依赖外, 本项目同样依赖托管在 MavenCentral/Github/SourceForge 上的资源。如果您位于中国大陆, 可能需要设置恰当的镜像地址。
+A: Building requires a healthy network. In addition to the Flutter-related dependencies hosted by Google, this project depends on resources hosted on MavenCentral / GitHub / SourceForge. If you are in mainland China you may need to configure appropriate mirrors.
-## 美术资源
-
-本项目图标来自 [Yuquanaaa](https://www.pixiv.net/users/66219277) 发表在 [Pixiv](https://www.pixiv.net/artworks/116666979) 上的作品。
-
-此图标由其原作者 [Yuquanaaa](https://www.pixiv.net/users/66219277) 拥有版权。我们已获得原作者的授权和许可, 可以在本项目中使用这一图标。这一图标不是自由使用的, 未经原作者明确授权, 任何人不得擅自使用、复制、修改或分发这一图标。
+## Art assets
-本项目内嵌字体为 [Mi Sans](https://hyperos.mi.com/font/en/details/sc/) 字体, 由 [Xiaomi](https://www.mi.com/) 开发和拥有版权。
+The app icon used by upstream Kazumi was created by [Yuquanaaa](https://www.pixiv.net/users/66219277) and published on [Pixiv](https://www.pixiv.net/artworks/116666979). Copyright is held by the original author [Yuquanaaa](https://www.pixiv.net/users/66219277), and upstream has obtained their authorization to use it. The icon is **not** freely usable; without explicit permission from the original author no one may use, copy, modify, or distribute it.
-## 免责声明
+This Akiora fork ships its own custom icon and does not redistribute the upstream icon. Any custom artwork bundled here belongs to its respective owner.
-本项目基于 GNU 通用公共许可证第 3 版(GPL-3.0)授权。我们不对其适用性、可靠性或准确性作出任何明示或暗示的保证。在法律允许的最大范围内, 作者和贡献者不承担任何因使用本软件而产生的直接、间接、偶然、特殊或后果性的损害赔偿责任。
+The bundled font is [Mi Sans](https://hyperos.mi.com/font/en/details/sc/), developed and copyrighted by [Xiaomi](https://www.mi.com/).
-使用本项目需遵守所在地法律法规, 不得进行任何侵犯第三方知识产权的行为。因使用本项目而产生的数据和缓存应在24小时内清除, 超出 24 小时的使用需获得相关权利人的授权。
+## Disclaimer
-## 隐私政策 (Privacy policy)
+This project is licensed under the GNU General Public License v3.0 (GPL-3.0). We make no express or implied warranty as to its fitness, reliability, or accuracy. To the maximum extent permitted by law, the authors and contributors are not liable for any direct, indirect, incidental, special, or consequential damages arising from the use of this software.
-我们不收集任何用户数据, 不使用任何遥测组件。
+Use of this project must comply with the laws and regulations of your jurisdiction, and must not infringe any third party's intellectual property rights. Any data and caches generated by using this project should be cleared within 24 hours; use beyond 24 hours requires authorization from the relevant rights holder.
-## 代码签名策略 (Code signing policy)
-提交者: [Contributors](https://github.com/Predidit/Kazumi/graphs/contributors)
-审阅者: [Owner](https://github.com/Predidit)
+## Privacy policy
-## 赞助 (Sponsors)
-|  | Free code signing on Windows provided by [SignPath.io](https://about.signpath.io/), certficate by [SignPath Foundation](https://signpath.org/) |
-|------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------|
+We do not collect any user data and do not use any telemetry components.
-## 致谢
+## Code signing policy
+Submitters: [Contributors](https://github.com/Predidit/Kazumi/graphs/contributors)
+Reviewers: [Owner](https://github.com/Predidit)
-特别感谢 [XpathSelector](https://github.com/simonkimi/xpath_selector) 这个优秀的项目是本项目的基石。
+## Sponsors
+|  | Free code signing on Windows provided by [SignPath.io](https://about.signpath.io/), certificate by [SignPath Foundation](https://signpath.org/) |
+|------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------|
-特别感谢 [DandanPlayer](https://www.dandanplay.com/) 本项目使用了 dandanplayer 开放 API 以提供弹幕交互。
+## Acknowledgments
-特别感谢 [Bangumi](https://bangumi.tv/) 本项目使用了 Bangumi 开放 API 以提供番剧元数据。
+Special thanks to [XpathSelector](https://github.com/simonkimi/xpath_selector) — this excellent project is the cornerstone of ours.
-特别感谢 [Anime4K](https://github.com/bloc97/Anime4K) 本项目使用 Anime4K 进行实时超分。
+Special thanks to [DandanPlayer](https://www.dandanplay.com/) — we use the dandanplay open API to power danmaku interactions.
-特别感谢 [SyncPlay](https://github.com/Syncplay/syncplay) 本项目使用 SyncPlay 协议并通过 SyncPlay 公共服务器实现一起看功能。
+Special thanks to [Bangumi](https://bangumi.tv/) — we use the Bangumi open API for anime metadata.
-特别感谢 [trace.moe](https://trace.moe) 本项目使用了 trace.moe 提供的图片识别番剧功能。
+Special thanks to [Anime4K](https://github.com/bloc97/Anime4K) — used for real-time super-resolution.
-感谢 [media-kit](https://github.com/media-kit/media-kit) 本项目跨平台媒体播放能力来自 media-kit。
+Special thanks to [SyncPlay](https://github.com/Syncplay/syncplay) — we use the SyncPlay protocol and its public servers to power Watch Together.
-感谢 [avbuild](https://github.com/wang-bin/avbuild) 本项目使用了来自 avbuild 的树外补丁实现非标准视频流播放。
+Special thanks to [trace.moe](https://trace.moe) — used for the image-based anime search feature.
-感谢 [hive](https://github.com/isar/hive) 本项目持久化储存能力来自 hive。
+Thanks to [media-kit](https://github.com/media-kit/media-kit) — provides cross-platform media playback.
+Thanks to [avbuild](https://github.com/wang-bin/avbuild) — we use out-of-tree patches from avbuild to enable non-standard video-stream playback.
+Thanks to [hive](https://github.com/isar/hive) — provides the persistent storage layer.
diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
index a6d9c79bc..d1723ff2f 100644
--- a/android/app/src/main/AndroidManifest.xml
+++ b/android/app/src/main/AndroidManifest.xml
@@ -1,6 +1,6 @@
CFBundleDevelopmentRegion
$(DEVELOPMENT_LANGUAGE)
CFBundleDisplayName
- Kazumi
+ Akiora
CFBundleExecutable
$(EXECUTABLE_NAME)
CFBundleIdentifier
diff --git a/lib/app_widget.dart b/lib/app_widget.dart
index f785b1580..d11761f85 100644
--- a/lib/app_widget.dart
+++ b/lib/app_widget.dart
@@ -215,12 +215,12 @@ class _AppWidgetState extends State
bool saveExitBehavior = false; // 下次不再询问?
return AlertDialog(
- title: const Text('退出确认'),
+ title: const Text('Exit confirmation'),
content: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
- const Text('您想要退出 Kazumi 吗?'),
+ const Text('Do you want to exit Akiora?'),
const SizedBox(height: 24),
StatefulBuilder(builder: (context, setState) {
onChanged(value) {
@@ -233,7 +233,7 @@ class _AppWidgetState extends State
spacing: 8,
children: [
Checkbox(value: saveExitBehavior, onChanged: onChanged),
- const Text('下次不再询问'),
+ const Text('Do not ask again'),
],
);
}),
@@ -247,7 +247,7 @@ class _AppWidgetState extends State
}
exit(0);
},
- child: const Text('退出 Kazumi')),
+ child: const Text('Exit Akiora')),
TextButton(
onPressed: () async {
if (saveExitBehavior) {
@@ -256,9 +256,9 @@ class _AppWidgetState extends State
KazumiDialog.dismiss();
windowManager.hide();
},
- child: const Text('最小化至托盘')),
+ child: const Text('Minimize to tray')),
const TextButton(
- onPressed: KazumiDialog.dismiss, child: Text('取消')),
+ onPressed: KazumiDialog.dismiss, child: Text('Cancel')),
],
);
});
@@ -304,13 +304,13 @@ class _AppWidgetState extends State
}
if (!Platform.isLinux) {
- await trayManager.setToolTip('Kazumi');
+ await trayManager.setToolTip('Akiora');
}
Menu trayMenu = Menu(items: [
- MenuItem(key: 'show_window', label: '显示窗口'),
+ MenuItem(key: 'show_window', label: 'Show window'),
MenuItem.separator(),
- MenuItem(key: 'exit', label: '退出 Kazumi')
+ MenuItem(key: 'exit', label: 'Exit Akiora')
]);
await trayManager.setContextMenu(trayMenu);
}
@@ -344,14 +344,10 @@ class _AppWidgetState extends State
: dynamicDarkTheme;
return MaterialApp.router(
- title: "Kazumi",
+ title: "Akiora",
localizationsDelegates: GlobalMaterialLocalizations.delegates,
- supportedLocales: const [
- Locale.fromSubtags(
- languageCode: 'zh', scriptCode: 'Hans', countryCode: "CN")
- ],
- locale: const Locale.fromSubtags(
- languageCode: 'zh', scriptCode: 'Hans', countryCode: "CN"),
+ supportedLocales: const [Locale('en')],
+ locale: const Locale('en'),
theme: lightTheme,
darkTheme: effectiveDarkTheme,
themeMode: themeProvider.themeMode,
diff --git a/lib/bean/card/bangumi_card.dart b/lib/bean/card/bangumi_card.dart
index dabe803a6..1e83172b4 100644
--- a/lib/bean/card/bangumi_card.dart
+++ b/lib/bean/card/bangumi_card.dart
@@ -1,4 +1,5 @@
import 'package:flutter/material.dart';
+import 'package:kazumi/bean/widget/translated_text.dart';
import 'package:flutter_modular/flutter_modular.dart';
import 'package:kazumi/bean/card/network_img_layer.dart';
import 'package:kazumi/bean/dialog/dialog_helper.dart';
@@ -29,7 +30,7 @@ class BangumiCardV extends StatelessWidget {
onTap: () {
if (!canTap) {
KazumiDialog.showToast(
- message: '编辑模式',
+ message: 'Edit mode',
);
return;
}
@@ -90,7 +91,7 @@ class BangumiContent extends StatelessWidget {
return Expanded(
child: Padding(
padding: const EdgeInsets.fromLTRB(5, 3, 5, 1),
- child: Text(
+ child: TranslatedText(
bangumiItem.nameCn,
textAlign: TextAlign.start,
style: const TextStyle(
diff --git a/lib/bean/card/bangumi_history_card.dart b/lib/bean/card/bangumi_history_card.dart
index ae3763a6a..7c2c84d97 100644
--- a/lib/bean/card/bangumi_history_card.dart
+++ b/lib/bean/card/bangumi_history_card.dart
@@ -1,4 +1,5 @@
import 'package:flutter/material.dart';
+import 'package:kazumi/bean/widget/translated_text.dart';
import 'package:flutter_mobx/flutter_mobx.dart';
import 'package:flutter_modular/flutter_modular.dart';
import 'package:kazumi/bean/card/network_img_layer.dart';
@@ -40,11 +41,11 @@ class _BangumiHistoryCardVState extends State {
Future _onTap() async {
if (widget.showDelete) {
- KazumiDialog.showToast(message: '编辑模式');
+ KazumiDialog.showToast(message: 'Edit mode');
return;
}
KazumiDialog.showLoading(
- msg: '获取中',
+ msg: 'Loading',
barrierDismissible: isDesktop(),
onDismiss: () {
videoPageController.cancelQueryRoads();
@@ -60,7 +61,7 @@ class _BangumiHistoryCardVState extends State {
}
if (!flag) {
KazumiDialog.dismiss();
- KazumiDialog.showToast(message: '未找到关联番剧源');
+ KazumiDialog.showToast(message: 'No associated anime source found');
return;
}
videoPageController.bangumiItem = widget.historyItem.bangumiItem;
@@ -89,7 +90,7 @@ class _BangumiHistoryCardVState extends State {
? widget.historyItem.bangumiItem.name
: widget.historyItem.bangumiItem.nameCn;
final String episodeText = widget.historyItem.lastWatchEpisodeName.isEmpty
- ? '第${widget.historyItem.lastWatchEpisode}话'
+ ? 'Ep ${widget.historyItem.lastWatchEpisode}'
: widget.historyItem.lastWatchEpisodeName;
return Dismissible(
@@ -141,7 +142,7 @@ class _BangumiHistoryCardVState extends State {
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
- Text(
+ TranslatedText(
title,
style: theme.textTheme.titleSmall?.copyWith(
color: colorScheme.onSurface,
@@ -237,7 +238,7 @@ class _BangumiHistoryCardVState extends State {
size: 20,
color: colorScheme.onSurfaceVariant,
),
- tooltip: '番剧详情',
+ tooltip: 'Anime details',
onPressed: () {
Modular.to.pushNamed(
'/info/',
@@ -252,7 +253,7 @@ class _BangumiHistoryCardVState extends State {
Icons.delete_outline,
color: colorScheme.error,
),
- tooltip: '删除记录',
+ tooltip: 'Delete record',
onPressed: () {
widget.onDeleted?.call();
},
diff --git a/lib/bean/card/bangumi_info_card.dart b/lib/bean/card/bangumi_info_card.dart
index 22d3dda80..70cd78a43 100644
--- a/lib/bean/card/bangumi_info_card.dart
+++ b/lib/bean/card/bangumi_info_card.dart
@@ -1,4 +1,5 @@
import 'package:flutter/material.dart';
+import 'package:kazumi/bean/widget/translated_text.dart';
import 'package:flutter_rating_bar/flutter_rating_bar.dart';
import 'package:kazumi/bean/widget/collect_button.dart';
import 'package:kazumi/utils/constants.dart';
@@ -33,7 +34,7 @@ class _BangumiInfoCardVState extends State {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
- ' 评分透视:',
+ ' Rating breakdown:',
),
SizedBox(height: 16),
AspectRatio(
@@ -66,7 +67,7 @@ class _BangumiInfoCardVState extends State {
widget.bangumiItem.votes *
100;
return BarTooltipItem(
- '${percentage.toStringAsFixed(2)}% (${widget.bangumiItem.votesCount[groupIndex]}人)',
+ '${percentage.toStringAsFixed(2)}% (${widget.bangumiItem.votesCount[groupIndex]} votes)',
TextStyle(
color:
Theme.of(context).colorScheme.onInverseSurface),
@@ -124,7 +125,7 @@ class _BangumiInfoCardVState extends State {
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
- Text(
+ TranslatedText(
widget.bangumiItem.nameCn == ''
? widget.bangumiItem.name
: (widget.bangumiItem.nameCn),
@@ -171,7 +172,7 @@ class _BangumiInfoCardVState extends State {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
- '放送开始:',
+ 'Air date:',
),
Text(
widget.bangumiItem.airDate == ''
@@ -186,8 +187,8 @@ class _BangumiInfoCardVState extends State {
SizedBox(height: 8),
Text(
widget.showRating
- ? '${widget.bangumiItem.votes} 人评分:'
- : '*** 人评分:',
+ ? '${widget.bangumiItem.votes} ratings:'
+ : '*** ratings:',
),
if (widget.isLoading)
// Skeleton Loader 占位符
diff --git a/lib/bean/card/bangumi_timeline_card.dart b/lib/bean/card/bangumi_timeline_card.dart
index e66cedee6..23f5d5d7e 100644
--- a/lib/bean/card/bangumi_timeline_card.dart
+++ b/lib/bean/card/bangumi_timeline_card.dart
@@ -1,4 +1,5 @@
import 'package:flutter/material.dart';
+import 'package:kazumi/bean/widget/translated_text.dart';
import 'package:flutter_modular/flutter_modular.dart';
import 'package:kazumi/modules/bangumi/bangumi_item.dart';
import 'package:kazumi/bean/card/network_img_layer.dart';
@@ -131,7 +132,7 @@ class BangumiTimelineCard extends StatelessWidget {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
- Text(
+ TranslatedText(
title,
style: nameStyle,
maxLines: useWideLayout ? 2 : 1,
@@ -143,7 +144,7 @@ class BangumiTimelineCard extends StatelessWidget {
child: Padding(
padding: EdgeInsets.only(top: supportingText.isNotEmpty ? 6 : 0),
child: supportingText.isNotEmpty
- ? Text(
+ ? TranslatedText(
supportingText,
style: subStyle,
maxLines: supportingLines,
diff --git a/lib/bean/card/comments_card.dart b/lib/bean/card/comments_card.dart
index 81f308a0e..c628d4e25 100644
--- a/lib/bean/card/comments_card.dart
+++ b/lib/bean/card/comments_card.dart
@@ -90,7 +90,7 @@ class CommentsCard extends StatelessWidget {
color: Theme.of(context).colorScheme.primary,
borderRadius: BorderRadius.circular(4),
),
- child: Text('我的吐槽',
+ child: Text('My comment',
style: TextStyle(fontSize: 12,color: Theme.of(context).colorScheme.primaryContainer),
))
],
diff --git a/lib/bean/card/episode_comments_card.dart b/lib/bean/card/episode_comments_card.dart
index 10f0e0d43..080787606 100644
--- a/lib/bean/card/episode_comments_card.dart
+++ b/lib/bean/card/episode_comments_card.dart
@@ -16,7 +16,7 @@ class EpisodeCommentsCard extends StatelessWidget {
// 对 用户评论 做判空操作,如果为空则显示“用户已删除”
String userComment = commentItem.comment.comment;
if (userComment.isEmpty) {
- userComment = "<用户已删除>";
+ userComment = "";
}
return Card(
diff --git a/lib/bean/settings/color_type.dart b/lib/bean/settings/color_type.dart
index 373eca1cb..0cd4be013 100644
--- a/lib/bean/settings/color_type.dart
+++ b/lib/bean/settings/color_type.dart
@@ -1,13 +1,13 @@
import 'package:flutter/material.dart';
final List