Skip to content

Force dynamic content to English + rename app to Akiora#2

Merged
Deadendev merged 1 commit into
mainfrom
feature/force-english-and-rename-akiora
May 31, 2026
Merged

Force dynamic content to English + rename app to Akiora#2
Deadendev merged 1 commit into
mainfrom
feature/force-english-and-rename-akiora

Conversation

@kiro-agent

@kiro-agent kiro-agent Bot commented May 31, 2026

Copy link
Copy Markdown

This pull request was created by @kiro-agent on behalf of @Deadendev 👻

Comment with /kiro fix to address specific feedback or /kiro all to address everything.
Learn about Kiro autonomous agent


Summary

Two requested changes:

  1. Force dynamic content (anime titles, summaries) to English — even though the Bangumi API only returns Chinese/Japanese, the app now machine-translates it on device.
  2. Rename the app to "Akiora" across the UI and native platforms.

1. Force English

Bangumi provides only name (original, usually Japanese) and name_cn (Chinese) — there is no English field. So the app now translates at display time:

  • TranslationService (lib/services/translation/translation_service.dart): translates non-Latin text to English using a keyless translation endpoint, with an in-memory + Hive-persistent cache (each unique string translated once), request de-duplication, a dedicated proxy-aware Dio client, and graceful fallback to the original text on any failure.
  • TranslatedText widget (lib/bean/widget/translated_text.dart): a drop-in Text replacement that shows the original immediately, then swaps in the cached English translation. The underlying data model is never mutated.
  • Wired into: popular/recommended, search results, and tracking grids (BangumiContent), the info page title, watch-history cards, timeline cards, and the info-page summary.
  • New "Force English" toggle in Interface settings (default on, key forceEnglishTranslation).

Why display-time translation: name_cn is also used as the plugin search keyword and as storage identifiers/folder names. Translating the data would break plugin search and downloads, so only the displayed text is translated.

2. Rename to Akiora

Changed user-visible names to Akiora:

  • Dart: window/app title, main app bar, exit dialog, tray tooltip + menu item, X11 + desktop-shortcut prompts, audio notification channel name, plugin version-compatibility message.
  • Native: Android android:label, iOS CFBundleDisplayName, macOS CFBundleDisplayName, Windows window title (+ FindWindow single-instance match kept consistent) and Runner.rc ProductName/FileDescription, Linux .desktop Name=, web <title>/manifest.

Intentionally kept unchanged (renaming would break things):

  • Dart package name kazumi and all package:kazumi/... imports; KazumiLogger/KazumiDialog/KazumiCaptcha identifiers.
  • Auto-updater asset prefix Kazumi-$version (must match the upstream GitHub release asset names).
  • Linux tray icon id io.github.Predidit.Kazumi, bundle/application ids, executable/binary names.
  • "About" external links (homepage, repo, Telegram group) still point to the upstream Kazumi project.

Testing / Limitations

  • Flutter SDK is not available in this environment, so flutter analyze/build was not run — please run them before merging.
  • Translation requires network access to the translation endpoint; it respects the app's proxy setting and fails gracefully (shows original text) when unreachable. Quality is machine-translation level.
  • Not yet translated (can be extended): genre tags, character/staff names, user comments, and the in-player title string. Titles + summaries (the main ask) are covered.
  • macOS shows "Akiora" via CFBundleDisplayName while keeping PRODUCT_NAME (bundle/output name) stable.

Force English (dynamic content):
- Add TranslationService: on-device machine translation (keyless endpoint)
  with in-memory + Hive-persistent caching, proxy-aware Dio, graceful fallback
- Add TranslatedText widget that translates at display time (data untouched)
- Translate anime titles in popular/search/collect grids, info page, history,
  and timeline cards; translate the info-page summary
- Add 'Force English' toggle in Interface settings (default on)
- Underlying nameCn/name kept intact so plugin search & storage still work

Rename app to Akiora (display name only):
- Dart: window/app title, app bar, exit dialog, tray tooltip/menu, X11 and
  shortcut prompts, audio notification channel, plugin version message
- Native: Android label, iOS/macOS display name, Windows window title +
  resource metadata, Linux .desktop Name, web title/manifest
- Kept functional identifiers unchanged: Kazumi package name, KazumiLogger/
  KazumiDialog classes, update asset prefix (matches upstream releases),
  Linux tray icon id, bundle/application ids
@Deadendev Deadendev merged commit 3ae09ac into main May 31, 2026
6 of 7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants