All Projects → arimah → condict

arimah / condict

Licence: MIT license
Dictionary software for constructed languages.

Programming Languages

typescript
32286 projects
c
50402 projects - #5 most used programming language
javascript
184084 projects - #8 most used programming language
Fluent
28 projects
CSS
56736 projects
C++
36643 projects - #6 most used programming language

Projects that are alternatives of or similar to condict

langua
A suite of language tools
Stars: ✭ 29 (+38.1%)
Mutual labels:  dictionary, conlang
mw-thesaurus.el
Merriam-Webster Thesaurus in Emacs
Stars: ✭ 84 (+300%)
Mutual labels:  dictionary
sshash
A compressed, associative, exact, and weighted dictionary for k-mers.
Stars: ✭ 62 (+195.24%)
Mutual labels:  dictionary
programminginpython.com
This repo consists code of all the programs discussed at programminginpython.com website
Stars: ✭ 60 (+185.71%)
Mutual labels:  dictionary
nihongo
Japanese Dictionary
Stars: ✭ 77 (+266.67%)
Mutual labels:  dictionary
Diccionario-JavaScript
project-dictionary.gitbooks.io/diccionario-javascript/content/
Stars: ✭ 13 (-38.1%)
Mutual labels:  dictionary
JADA
JADA - Just Another Dictionary App
Stars: ✭ 20 (-4.76%)
Mutual labels:  dictionary
jiten
jiten - japanese android/cli/web dictionary based on jmdict/kanjidic — 日本語 辞典 和英辞典 漢英字典 和独辞典 和蘭辞典
Stars: ✭ 64 (+204.76%)
Mutual labels:  dictionary
vocabulary-titan
Chatbot for searching vocabulary on mainstream dictionaries
Stars: ✭ 70 (+233.33%)
Mutual labels:  dictionary
MagicDict
Fastest and Smallest Data structure for Querying valid english words.
Stars: ✭ 24 (+14.29%)
Mutual labels:  dictionary
dictionary
Project that tries to help you learn English.📕
Stars: ✭ 28 (+33.33%)
Mutual labels:  dictionary
French-Dictionary
CSV files containing all french adjectives, adverbs, conjunctions, determiners, nouns, prepositions, pronouns, verbs and their gender, types and conjugations
Stars: ✭ 74 (+252.38%)
Mutual labels:  dictionary
new-word-tab
A browser extension to learn a new word per new tab
Stars: ✭ 30 (+42.86%)
Mutual labels:  dictionary
Britfone
British English pronunciation dictionary
Stars: ✭ 66 (+214.29%)
Mutual labels:  dictionary
assoc-list
Dictionary with custom keys implemented using association lists
Stars: ✭ 30 (+42.86%)
Mutual labels:  dictionary
flask-mdict
Flask Mdict Server. Query word online with MDICT dictionary
Stars: ✭ 62 (+195.24%)
Mutual labels:  dictionary
js-mdict
*.mdx/*.mdd interpreter js implements
Stars: ✭ 91 (+333.33%)
Mutual labels:  dictionary
wikdict-gen
Generation of bilingual dictionaries from Wiktionary/dbnary data for the WikDict project
Stars: ✭ 32 (+52.38%)
Mutual labels:  dictionary
moonstar
MoonStar Türkçe Dil Kılavuzu
Stars: ✭ 11 (-47.62%)
Mutual labels:  dictionary
myRime
我的 Rime 配置,适用于朙月拼音/小鹤双拼/小狼毫 /ibus
Stars: ✭ 46 (+119.05%)
Mutual labels:  dictionary

Condict

Condict is a dictionary application primarily designed for constructed languages. Or at least, that's what this is intended to become. For the time being, it's very much a work-in-progress, with a barely functioning frontend.

Special care has been taken to ensure Condict adheres as closely as possible to current best accessibility practices, to make the software usable by the widest possible audience.

The name Condict is a portmanteau of "conlang dictionary", while conlang is itself a portmanteau of "constructed language". It's a metaportmanteau, if you will.

Development status

Development is slow. This is one of several projects I engage in outside my full-time job. As a result, I am unable to devote significant time to Condict most days. This project is also still fairly immature as far as tooling and structure are concerned, and much remains to be improved. Ideas and thoughts are welcome.

In lieu of a proper timeline or to-do list, here are some of the features that are planned for Condict:

  • Multiple languages with interlinking – useful for world building!
  • Inflection rules, in the form of inflection tables, which you can associate with a part of speech, and attach to any word you add to the dictionary.
    • Including the ability to add inflected words to the dictionary, so that birds can be shown as "plural of bird".
  • Word etymology, both free-form – e.g. "Misinterpretation of acorn as egg + corn" – and simple combinations of other words – "snow + man".
    • Including showing derived terms under any dictionary word. Under snow, you'd be able to find snowman.
  • Search and filtering options, naturally.
  • Sample texts, with interlinear glosses, which get automatically linked to and shown under the words used therein.
  • Tags, mainly for thematic grouping, such as food, colours, emotions.
  • And more in the future!

Contributing

Condict is still a little bit too early in development for feature contributions. There is no public roadmap to contribute to, and the project structure as a whole is still in a state of flux. In addition, Condict was originally written in JS, then later translated to TypeScript, and is still suffering the effects. Some of the code from the pre-TS days is downright messy, and requires severe rearchitecting.

If you'd like to keep up to date with developments, feel free to watch this repo.

That said, bug reports and bug fix PRs are welcome, even at this stage.

Getting started

Getting Condict up and running is a slightly involved process. Keep in mind Condict is a work in progress, and many features are missing, including documentation.

The first thing you must do is ensure all dependencies are downloaded and installed:

  1. npm install
  2. Bootstrap dependencies with Lerna: npm run bootstrap or, alternatively if you have a globally installed Lerna, lerna bootstrap --hoist. Hoisting is strongly recommended, especially on Windows, as module resolution may otherwise fail due to symlinked packages with identical dependencies. Additionally, without hoisting, styled-components may end up with multiple instances, which breaks UI components.
  3. On Windows: build the build tools, node scripts/build -g build-tools, then bootstrap packages again as above. This is needed because npm cannot correctly install the condict-graphql-typer binary if the compiled JS file is missing.
  4. Build everything: npm run build

Testing/developing UI components

  1. npm run dev:ui
  2. Navigate to http://localhost:3000.

Source files for the UI component test server are in dev/.

Testing/developing the server

  1. npm run dev:server
  2. In a different terminal, cd packages/server
  3. First time only: cp config.json.example config.json
  4. Please edit config.json file if you wish to customize logging and the database location.
  5. First time after using the app, rebuild native dependencies: npm run build:native
  6. npm start

If the server fails to start with errors around better-sqlite3 or bcrypt, you may also need to run npm run build:native-deps.

When the server is running, a GraphQL playground will be accessible at http://localhost:4000. The server does not automatically reload on recompilation; you must restart it manually.

Testing/developing the app

The app depends on the server. The server has dependencies on a few native modules, and contains its own native module too. While the server targets Node, the app is written for Electron. The practical effect of this: you must rebuild native modules for the app, and you cannot run the app and the server simultaneously in the same repository.

  1. npm run dev:app
  2. In a different terminal, cd packages/app
  3. First time or after using the server: npm run build:native
  4. npm start

Now you should have a Condict window. Have fun!

Code structure

The eventual goal of Condict is to be distributable as a standalone Electron app, as well as a separate server package for shared dictionary use (e.g. on your own website). Condict is made up of many packages, which are found in packages/.

  • app: The main Condict frontend (the Electron app).
  • graphql-typer: Generates TypeScript type definitions from a GraphQL schema.
  • ipa: Utilities for searching and listing IPA characters.
  • platform: Basic platform detection, with support for overrides.
  • rich-text-editor: The rich text editor component for definition descriptions and inflection table captions.
  • server: The storage backend.
  • table-editor: UI components for editing inflection tables. Separate package because of its size and complexity.
  • ui: Mostly-general-purpose reusable UI components.
  • x-sampa: X-SAMPA-to-IPA converter.

TODO: documentation.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].