words.hk dictionary for Android and iOS
-
Install Flutter by following the official doc: https://docs.flutter.dev/get-started/install
-
Download and install Android Studio to develop for Android: https://developer.android.com/studio
-
Start Android Studio, and go through the ‘Android Studio Setup Wizard’. This installs the latest Android SDK, Android SDK Command-line Tools, and Android SDK Build-Tools, which are required by Flutter when developing for Android.
-
Run
flutter doctor
to confirm your installation is working. You should see some output like below. At a minimum you should have [✓] Flutter and [✓] Android toolchain to develop for Android, the other check marks are optional.
[✓] Flutter (Channel stable, 3.19.3, on Ubuntu 20.04.6 LTS 6.2.0-1019-azure, locale C.UTF-8)
[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
[✗] Chrome - develop for the web (Cannot find Chrome executable at google-chrome)
...
[✗] Linux toolchain - develop for Linux desktop
...
[!] Android Studio (not installed)
[✓] Connected device (1 available)
[✓] Network resources
If you want to build for iOS, you are required to use a Mac. You will need the latest version of Xcode as well.
-
Run the
setup.sh
at the root of this project to install the Rust backend. -
Run
flutter run
to run the app, orflutter build appbundle
to create an Android app bundleflutter build apk
to build an Android APKflutter build ios
to build for iOS
- Bump app version in
pubspec.yaml
- Open the wordshk-tools project and update the app version in
examples/export_sqlite_db/src/main.rs
:- api.export_dict_as_sqlite_db(&dict_path, "{old_version}") + api.export_dict_as_sqlite_db(&dict_path, "{new_version}")
- Regenerate dictionary data with updated words.hk content
a. Download the latest CSV from https://words.hk/faiman/request_data/
b. Open the wordshk-tools project and replace the old wordshk.csv with the downloaded one
c. Remove the first two autogenerated comments in the CSV
d. Regenerate
dict.db.gz
andenglish_index.rkyv
:Copy the two files back to this project. Copy thecd export_sqlite_db/ cargo run --release gzip app_tmp/dict.db
dict.db.gz
back toassets/
and copy theenglish_index.rkyv
back torust/data/
. - Build iOS and Android binaries:
flutter clean flutter pub get cd ios/ pod install cd .. # Go to Xcode and Product -> Archive flutter build appbundle
-
Open Adobe Audition, run the "Match Loudness" with these settings:
- ITU-R BS.1770-3 Loudness
- Target Loudness: -16 LUFS
- Tolerance: 2 LU
- Max True Peak Level: -2 dBTP
- Look-ahead Time: 12ms
- Release Time: 200ms
-
Export the files with matched loudness With export settings as follows:
- Format MP3
- Sample Type: Same as source
- Format settings: MP3 24 Kbps CBR (Constant type)
-
Change directory into
assets/jyutping_female
orassets/jyutping_male
. -
Run
process_audios.sh
. This script does three things:- Trim silence at the beginning and end of all mp3 files
- Pad the end of jap6sing1 syllables so they are not too short
- Peak normalize jap6sing1 syllables to make they as loud as other syllables
Software: Copyright (C) 2022 Xiang Li, licensed under the MIT license. Dictionary: Copyright (C) 2014-2022 Hong Kong Lexicography Limited.
"words.hk", "wordshk", "粵典" are trade names of Hong Kong Lexicography Limited. Permission by Hong Kong Lexicography Limited must be obtained to promote or distribute materials containing these names. In particular, notwithstanding any permission (if applicable) to redistribute the source code of this project and/or its derivative works by the copyright owner(s), unless you obtain explicit permission from Hong Kong Lexicography Limited, you are required to remove all mentions of "words.hk", "wordshk", "粵典" from your redistributions.
The dictionary contents published by words.hk is copyrighted by Hong Kong Lexicography Limited. You may be eligible to obtain a license from https://words.hk/base/hoifong/