Coder Social home page Coder Social logo

luoliyan / chinese-support-redux Goto Github PK

View Code? Open in Web Editor NEW
102.0 13.0 49.0 138.93 MB

Anki add-on providing support for Chinese study

Home Page: https://ankiweb.net/shared/info/1128979221

License: GNU General Public License v3.0

Python 57.88% Makefile 0.01% OpenEdge ABL 42.10%
anki flashcards addon chinese mandarin cantonese study-aid

chinese-support-redux's Introduction

Archived

Due to “real life” getting in the way, this project has not been maintained for some time, and — from what I understand — does’t work with recent versions of Anki. Sadly, the time to archive the repo has arrived.

Thanks to the community for all your support, from the bug reports to pull requests to the random friendly email. Damien has cultivated a really heathly culture around his product. Much appreciation to Thomas Tempé as well, for obvious reasons.

For those looking for an alternative, I am reliably informed (thanks 3ter) that Chinese Support 3 is functional, and is actively maintained.

I may return to add-on development at some point, but currently I don’t develop in Python anymore, and haven’t updated Anki in over a year. That said, feel free to hit me up with an email if there’s anything I might be able to help with.

Chinese Support Redux

Codacy Badge Coverage Status

ko-fi

Chinese Support Redux is an Anki 2.1-compatible rewrite of the original Chinese Support add-on. It offers a number of features that streamline the process of creating flashcards for learning Chinese. The current focus of development effort is on improving the stability of the add-on and the accuracy of its output. Once the core functionality is sufficiently robust and reliable, additional features will be considered.

Please note that the add-on is still in beta and is sometimes shipped in an unstable state. Please upgrade with each new release and report any issues on GitHub. The automated test suite is a work-in-progress, so I still rely heavily on user reports to supplement my own manual testing.

Important Notes

  • If you find that a field is not filling at all, please check config.json for the complete list of valid field names. For those migrating from an older version of the add-on, you will need to rename any definition fields to English, German or French, depending on what you want.
  • If tone colours are not showing, ensure that the styling section of the template contains the following CSS:
.tone1 {color: red;}
.tone2 {color: orange;}
.tone3 {color: green;}
.tone4 {color: blue;}
.tone5 {color: gray;}

Features

  • Automatic field filling
    • Translation (from built-in dictionary; supports English, German and French)
    • Romanisation (supports Pīnyīn (拼音) and Cantonese Jyutping (粵拼))
    • Mandarin Audio (fetched from Google or Baidu)
    • Traditional (繁體字) and simplified (簡體字) characters
    • Bopomofo (ㄅㄆㄇㄈ), also known as Zhuyin (注音)
    • Rubies (small-print transcription placed above characters)
    • Frequency (from “very basic” to “obscure”) - based on anki-chinese-word-frequency
    • Usage Sentence Examples - Chinese/English sentence pairs from Tatoeba
  • Tone colours (applied to characters, romanisation and Bopomofo)
  • Built-in note types (Basic and Advanced)

Status

The vast majority of features have been successfully ported, and the add-on is in a usable state, albeit with some definite rough edges.

The add-on is still in beta. By this I mean “it works, but I wouldn’t trust it with my children”. Expect occasional issues, and please make a back-up before trying it. I use it myself and haven't experienced data loss, but your mileage may vary.

Please report any issues here on GitHub. Feature requests are also welcome.

If you are new to the Chinese Support add-on, the wiki from the previous version is still relevant (here).

Usage

The core feature of the add-on is the automatic field filling. To take advantage of this, you need to have an Anki note type with the appropriate fields (e.g., Hanzi, English, Pinyin, Sound). See config.json for a list of valid field names.

If you don't already have such a note type, the easiest approach is to use one of the built-in models. Two types are installed automatically: Basic and Advanced. The only important difference is that the Advanced model shows more information.

To use the field-filling features:

  1. Add a new note to Anki (press a)
  2. Select Chinese (Basic) or Chinese (Advanced) as the note type
  3. Enable Chinese Support Redux for this note type (click 汉字)
  4. Enter a word (e.g., 電話) into the Hanzi field (sentences will also work)
  5. Press Tab
  6. The remaining fields should then be populated automatically

Screenshots

Screenshot #1

Screenshot #2

Support

If you encounter any issues, the best way to have these addressed is to raise them on GitHub. Feature requests are welcome, with the caveat that all good things take time.

I understand the documentation is sparse. Anyone who wishes to add content to the wiki is more than welcome to.

Development

Testing

For those who wish to run the tests locally, this is fairly straightforward.

Clone the repository:

git clone https://github.com/luoliyan/chinese-support-redux
cd chinese-support-redux

Ideally, set up a virtual environment to isolate the project:

curl https://pyenv.run | bash
pyenv virtualenv 3.6.8 csr
pyenv local csr

Install dependencies and run the tests:

pip install -r requirements.txt
make test

Debugging with PyCharm

(a) Without Anki Source

  1. Copy the repo root to the Anki add-ons folder. As of version 2.1, this is %AppData%\Anki2\addons21
  2. Create a Python 3.8 virtual environment in PyCharm for the add-on folder (make sure you are running 64-bit Python). This can be done with:
import platform
platform.architecture()
  1. Run the following in the PyCharm console (these could be added to requirements.txt instead):
import subprocess
subprocess.check_call(["pip3", "install", "mypy", "anki", "ankirspy", "aqt", "pyqt5", pyqtwebengine"])
  1. Install the requirements.txt for the project venv
  2. Create a file for debugging in PyCharm as:
import aqt
aqt.run()
  1. Start debugging. The first Anki run will pick up the tests folder as a plugin and error out. This is expected.
  2. Go to the Tools → Add-ons menu and disable tests
  3. Enjoy coding!

(b) With Anki Source

  1. Download and extract Anki source code somewhere on the hard drive.
  2. Create a folder such as anki-addon-dev on your hard drive and open it on PyCharm as a project. Then, open Anki source code folder as another project within the current project window by choosing Attach.
  3. Under Preferences → Project → Project Dependencies → anki-addon-dev, check the box to approve the add-on depends on Anki source code.
  4. Under the run configurations beside run and debug buttons, edit the configuration as follows:
  • Script Path: [PATH_TO_ANKI_SOURCE_FOLDER]/anki-2.1.13/runanki
  • Parameters: -b [PATH_TO_ANKI_ADDON_PROJECT]/anki-addon-dev
  1. Create your project files and do the development on this path: anki-addon-dev/addons21/[YOUR_PROJECT_FOLDER]
  2. Happy debugging while developing

Additional Guidance

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.