PhoenixEmik/taigi-dict

Native Dictionary app for Taiwanese Hokkien on Android and iOS

★ 3Forks 0KotlinGitHub ↗Compare

Project website ↗

androiddictionaryflutteriostaigi

README

台語辭典

台語辭典 Taigi Dict banner

Download on the App Store Get it on Google Play Download APK

Swift Kotlin iOS 17+ macOS 14+ Android 7+ License MIT

正體中文說明

Offline Taiwanese Hokkien and Mandarin dictionary project built around the Ministry of Education dataset.

Quick Links

This repository contains the active native implementations and shared tooling for Taigi Dict:

  • Native Swift / SwiftUI app in ios-native/ for current iOS and macOS development
  • Native Kotlin / Jetpack Compose app in android-native/ for current Android development

The current native apps focus on offline lookup, downloadable audio archives, bookmarks, localized UI, and reference material for Tailo and Hanji usage.

Project Status

Core Experience

The product is organized around three primary tabs:

  • Dictionary: search Taiwanese headwords, Tailo romanization, and Mandarin definitions; reopen recent searches; drill into a dedicated detail page
  • Bookmarks: save entries and reopen them later
  • Settings: manage offline resources, appearance, language, reference material, and app information

App Identity

  • App display name: 台語辭典
  • Android application ID: org.taigidict.app
  • iOS and macOS bundle identifier: org.taigidict.app
  • Current native Apple app version: 1.3.6 (build 9)
  • Official project domain: taigidict.org
  • Production asset host: app.taigidict.org/assets

Features

  • Search Taiwanese headwords, Tailo romanization, and Mandarin definitions with weighted ranking and recent search history
  • Open dedicated entry detail pages with linked definitions and native share support
  • Save entries to bookmarks and reopen them from a separate tab
  • Download ministry word audio and example audio for offline playback
  • Offer Traditional Chinese, Simplified Chinese, and English UI
  • Adjust theme and reading text size
  • Read built-in Tailo and Hanji reference pages plus about and license screens

Data And Licensing

Canonical ministry references:

Production offline resource endpoints used by the apps:

Important distribution note:

Tech Stack

Native Android implementation:

  • Kotlin and Jetpack Compose with Material 3
  • AndroidX ViewModel, Kotlin coroutines, and Flow / StateFlow
  • Preferences DataStore for app settings, bookmarks, and search history, with legacy preference migration
  • custom SQLite import / repository as the default dictionary backend, with a Room-backed repository also present in the project
  • android-opencc for OpenCC-based Chinese conversion

Native Apple implementation:

  • SwiftUI
  • local Swift package split into TaigiDictCore and TaigiDictUI
  • GRDB.swift for SQLite access
  • SwiftyOpenCC for Chinese conversion
  • ZIPFoundation for offline archive handling

Project Structure

Run

Native iOS app:

Native iOS command-line build:

xcodebuild \
  -workspace ios-native/TaigiDictNative.xcworkspace \
  -scheme TaigiDictNative \
  -destination 'platform=iOS Simulator,name=iPhone 17' \
  build

For more Apple platform details, see ios-native/README.md.

Native macOS app:

Native macOS command-line build:

xcodebuild \
  -workspace ios-native/TaigiDictNative.xcworkspace \
  -scheme TaigiDictNativeMac \
  -destination 'platform=macOS' \
  build

Native Android app:

cd android-native
./gradlew app:assembleDebug

For more native Android details, see android-native/README.md.

Verify

Native Apple package and shared logic:

swift test --package-path ios-native

Native iOS app build verification:

xcodebuild \
  -workspace ios-native/TaigiDictNative.xcworkspace \
  -scheme TaigiDictNative \
  -destination 'platform=iOS Simulator,name=iPhone 17' \
  build

Native macOS app build verification:

xcodebuild \
  -workspace ios-native/TaigiDictNative.xcworkspace \
  -scheme TaigiDictNativeMac \
  -destination 'platform=macOS' \
  build

Native Android app:

cd android-native
./gradlew testDebugUnitTest
./gradlew app:assembleDebugAndroidTest

Optional Android Room-backed verification:

cd android-native
./gradlew verifyRoomDebug

Development Notes

Build Release APK

cd android-native
./gradlew :app:assembleRelease

Generated artifact:

  • android-native/app/build/outputs/apk/release/app-release.apk

Privacy Policy

Acknowledgments

License

Contributors

PhoenixEmik

Issues