{"id":39591036,"url":"https://github.com/scriptin/jmdict-simplified","last_synced_at":"2026-01-18T07:44:14.525Z","repository":{"id":3897505,"uuid":"51254948","full_name":"scriptin/jmdict-simplified","owner":"scriptin","description":"JMdict, JMnedict, Kanjidic, KRADFILE/RADKFILE in JSON format","archived":false,"fork":false,"pushed_at":"2026-01-12T12:30:45.000Z","size":92509,"stargazers_count":315,"open_issues_count":0,"forks_count":20,"subscribers_count":8,"default_branch":"master","last_synced_at":"2026-01-12T19:42:40.038Z","etag":null,"topics":["dictionary","dictionary-tools","japanese","japanese-language","jmdict","jmnedict","json","kanjidic","kanjidic2","kradfile","language","radkfile","xml"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc-by-sa-4.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/scriptin.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2016-02-07T16:34:32.000Z","updated_at":"2026-01-12T12:30:49.000Z","dependencies_parsed_at":"2023-07-05T19:02:51.143Z","dependency_job_id":"a948d3ac-ec09-4ae7-bb73-cf28c61d5372","html_url":"https://github.com/scriptin/jmdict-simplified","commit_stats":{"total_commits":492,"total_committers":5,"mean_commits":98.4,"dds":"0.21544715447154472","last_synced_commit":"26b45aaf04bf29877674fdcb1ab638d578d413fb"},"previous_names":[],"tags_count":193,"template":false,"template_full_name":null,"purl":"pkg:github/scriptin/jmdict-simplified","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scriptin%2Fjmdict-simplified","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scriptin%2Fjmdict-simplified/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scriptin%2Fjmdict-simplified/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scriptin%2Fjmdict-simplified/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/scriptin","download_url":"https://codeload.github.com/scriptin/jmdict-simplified/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scriptin%2Fjmdict-simplified/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28533172,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-18T00:39:45.795Z","status":"online","status_checked_at":"2026-01-18T02:00:07.578Z","response_time":98,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dictionary","dictionary-tools","japanese","japanese-language","jmdict","jmnedict","json","kanjidic","kanjidic2","kradfile","language","radkfile","xml"],"created_at":"2026-01-18T07:44:13.936Z","updated_at":"2026-01-18T07:44:14.502Z","avatar_url":"https://github.com/scriptin.png","language":"Kotlin","readme":"# jmdict-simplified\n\n**[JMdict][], [JMnedict][], [Kanjidic][], and [Kradfile/Radkfile][Kradfile] in JSON format**\u003cbr\u003e\nwith more comprehensible structure and beginner-friendly documentation\n\n[![Download JSON files](https://img.shields.io/static/v1?label=Download\u0026message=JSON%20files\u0026color=blue\u0026style=for-the-badge)][latest-release]\n[![Format docs](https://img.shields.io/static/v1?label=Read\u0026message=Format%20Docs\u0026color=blue\u0026style=for-the-badge)][format]\n\n[![NPM package: @scriptin/jmdict-simplified-types](https://img.shields.io/static/v1?label=NPM\u0026message=@scriptin/jmdict-simplified-types\u0026color=blue\u0026style=flat-square\u0026logo=npm)][npm-types]\u003cbr\u003e\n[![NPM package: @scriptin/jmdict-simplified-loader](https://img.shields.io/static/v1?label=NPM\u0026message=@scriptin/jmdict-simplified-loader\u0026color=blue\u0026style=flat-square\u0026logo=npm)][npm-loader]\n\n---\n\n- Releases are automatically scheduled for every Monday. See [release.yml](.github/workflows/release.yml)\n- Found a bug? Need a new feature? See [CONTRIBUTING.md](CONTRIBUTING.md)\n\n## Why?\n\nOriginal XML files are less than ideal in terms of format.\n(My opinion only, the JMdict/JMnedict project in general is absolutely awesome!)\nThis project provides the following changes and improvements:\n\n1. JSON instead of XML (or custom text format of RADKFILE/KRADFILE).\n   Because the original format used some \"advanced\" XML features,\n   such as entities and DOCTYPE, it could be quite difficult to use in some tech stacks,\n   e.g. when your programming language of choice has no libraries for parsing some syntax\n2. Regular structure for every item in every collection, no \"same as in previous\" implicit values.\n   This is a problem with original XML files because users' code has to keep track\n   of various parts of state while traversing collections. In this project, I tried to make every\n   item of every collection \"self-contained,\" with all the fields having all the values,\n   without a need to refer to preceding items\n3. Avoiding `null` (with few exceptions) and missing fields, preferring empty arrays.\n   See \u003chttp://thecodelesscode.com/case/6\u003e for the inspiration for this\n4. Human-readable names for fields instead of cryptic abbreviations with no explanations\n5. Documentation in a single file instead of browsing obscure pages across multiple sites.\n   In my opinion, the documentation is the weakest part of JMDict/JMnedict project\n\n## Format\n\n\u003e See the [Format documentation][format] or [TypeScript types](node/packages/jmdict-simplified-types/index.ts)\n\nPlease also read the original documentation if you have more questions:\n\n- [EDRDG wiki](https://www.edrdg.org/wiki/index.php/Main_Page)\n- [JMdict][] (also [wiki](https://www.edrdg.org/wiki/index.php/JMdict-EDICT_Dictionary_Project))\n- [JMnedict][]\n- [Kanjidic][]\n- [RADKFILE/KRADFILE][Kradfile]\n\nThere are also Kotlin types, although they contain some methods and annotations you might not need.\n\n- [JMdictJsonElement.kt](src/main/kotlin/org/edrdg/jmdict/simplified/conversion/jmdict/JMdictJsonElement.kt)\n- [JMnedictJsonElement.kt](src/main/kotlin/org/edrdg/jmdict/simplified/conversion/jmnedict/JMnedictJsonElement.kt)\n- [Kanjidic2JsonElement.kt](src/main/kotlin/org/edrdg/jmdict/simplified/conversion/kanjidic/Kanjidic2JsonElement.kt)\n\n## Full, \"common-only\", with examples, and language-specific versions\n\nThere are three main types of JSON files for the JMdict dictionary:\n\n- full - same as original files, with no omissions of entries\n- \"common-only\" - containing only dictionary entries considered \"common\" -\n  if any of `/k_ele/ke_pri` or `/r_ele/re_pri` elements in XML files contain\n  one of these markers: \"news1\", \"ichi1\", \"spec1\", \"spec2\", \"gai1\".\n  Only one such element is enough for the whole word to be considered common.\n  This corresponds to how online dictionaries such as \u003chttps://jisho.org\u003e\n  classify words as \"common\". Common-only distributions are much smaller.\n  They are marked with \"common\" keyword in file names, see the [latest release][latest-release]\n- with example sentences (built from JMdict_e_examp.xml source file) - English-only version\n  with example sentences from Tanaka corpus maintained by \u003chttps://tatoeba.org\u003e.\n  This version doesn't have a full support in this project: NPM libraries do not provide\n  parsers and type definitions\n\nAlso, JMdict and Kanjidic have language-specific versions with language codes\n(3-letter [ISO 639-2](https://en.wikipedia.org/wiki/ISO_639-2) codes for JMdict,\n2-letter [ISO 639-1](https://en.wikipedia.org/wiki/ISO_639-1) codes for Kanjidic) in file names:\n\n- `all` - all languages, i.e. no language filter was applied\n- `eng`/`en` - English\n- `ger`/`de` - German\n- `rus`/`ru` - Russian\n- `hun`/`hu` - Hungarian\n- `dut`/`nl` - Dutch\n- `spa`/`es` - Spanish\n- `fre`/`fr` - French\n- `swe`/`sv` - Swedish\n- `slv`/`sl` - Slovenian\n\nJMnedict and JMdict with examples have only one respective version each,\nsince they are both English-only, and JMnedict has no \"common\" indicators on entries.\n\n\u003e [!NOTE]\n\u003e You can configure the conversion scripts to produce more language-specific versions of JSON files\n\u003e for JMDict and Kanjidic files by editing `jmdictLanguages` and `kanjidicLanguages` variables in `build.gradle.kts`,\n\u003e see [issue #33](https://github.com/scriptin/jmdict-simplified/issues/33) for a Kanjidic example.\n\n## Requirements for running the conversion script\n\n- Java 17 (JRE only, JDK is not necessary) - you can use [Azul Zulu OpenJDK][AzulJava17]\n\nYou don't need to install Gradle, just use the Gradle wrapper provided in this repository:\n`gradlew` (for Linux/Mac) or `gradlew.bat` (for Windows)\n\n## Converting XML dictionaries\n\nNOTE: You can grab the pre-built JSON files in the [latest release][latest-release]\n\nUse included scripts: `gradlew` (for Linux/macOS) or `gradlew.bat` (for Windows).\n\nTasks to convert dictionary files and create distribution archives:\n\n- `./gradlew clean` - clean all build artifacts to start a fresh build,\n  in cases when you need to re-download and convert from scratch\n- `./gradlew download` - download and extract original dictionary XML files into `build/dict-xml`\n- `./gradlew convert` - convert all dictionaries to JSON and place into `build/dict-json`\n- `./gradlew archive` - create distribution archives (zip, tar+gzip) in `build/distributions`\n\nUtility tasks (for CI/CD workflows):\n\n- `./gradlew --quiet jmdictHasChanged`, `./gradlew --quiet jmnedictHasChanged`,\n  and `./gradlew --quiet kanjidicHasChanged`-  check if dictionary files have changed\n  by comparing checksums of downloaded files with those stored in the [checksums](checksums).\n  Outputs `YES` or `NO`. Run this only after `download` task!\n  The `--quiet` is to silence Gradle logs, e.g. when you need to put values into environments variables.\n- `./gradlew updateChecksums` - update checksum files in the [checksums](checksums) directory.\n  Run after creating distribution archives and commit checksum files into the repository,\n  so that next time CI/CD workflow knows if it needs to rebuild anything.\n- `./gradlew uberJar` - create an Uber JAR for standalone use (i.e. w/o Gradle).\n  The JAR program shows help messages and should be intuitive to use if you know how to run it.\n\nFor the full list of available tasks, run `./gradlew tasks`\n\n## Troubleshooting\n\n- Make sure to run tasks in order: `download` -\u003e `convert` -\u003e `archive`\n- If running Gradle fails, make sure `java` is available on your `$PATH` environment variable\n- Run Gradle with `--stacktrace`, `--info`, or `--debug` arguments to see more details\n  if you get an error\n\n## License\n\n### JMdict and JMnedict\n\nThe original XML files - **JMdict.xml**, **JMdict_e.xml**, **JMdict_e_examp.xml**,and **JMnedict.xml** -\nare the property of the Electronic Dictionary Research and Development Group,\nand are used in conformance with the Group's [license][EDRDG-license].\nProject started in 1991 by Jim Breen.\n\nAll derived files are distributed under the same license, as the original license requires it.\n\n### Kanjidic\n\nThe original **kanjidic2.xml** file is released under\n[Creative Commons Attribution-ShareAlike License v4.0][CC-BY-SA-4].\nSee the [Copyright and Permissions](https://www.edrdg.org/wiki/index.php/KANJIDIC_Project#Copyright_and_Permissions)\nsection on the Kanjidic wiki for details.\n\nAll derived files are distributed under the same license, as the original license requires it.\n\n### RADKFILE/KRADFILE\n\nThe RADKFILE and KRADFILE files are copyright and available under the [EDRDG License][EDRDG-license].\nThe copyright of the RADKFILE2 and KRADFILE2 files is held by Jim Rose.\n\n### NPM packages\n\nNPM packages [`@scriptin/jmdict-simplified-types`][npm-types] and\n[`@scriptin/jmdict-simplified-loader`][npm-loader] are available under [MIT license][MIT].\n\n### Other files\n\nThe source code and other files of this project, excluding the files and packages mentioned above,\nare available under [Creative Commons Attribution-ShareAlike License v4.0][CC-BY-SA-4].\nSee [LICENSE.txt](LICENSE.txt)\n\n[JMdict]: http://www.edrdg.org/jmdict/j_jmdict.html\n[JMnedict]: http://www.edrdg.org/enamdict/enamdict_doc.html\n[Kanjidic]: https://www.edrdg.org/wiki/index.php/KANJIDIC_Project\n[Kradfile]: https://www.edrdg.org/krad/kradinf.html\n[latest-release]: https://github.com/scriptin/jmdict-simplified/releases/latest\n[format]: https://scriptin.github.io/jmdict-simplified/\n[npm-types]: https://www.npmjs.com/package/@scriptin/jmdict-simplified-types\n[npm-loader]: https://www.npmjs.com/package/@scriptin/jmdict-simplified-loader\n[AzulJava17]: https://www.azul.com/downloads/?version=java-17-lts\u0026package=jre\n[EDRDG-license]: http://www.edrdg.org/edrdg/licence.html\n[CC-BY-SA-4]: http://creativecommons.org/licenses/by-sa/4.0/\n[MIT]: https://opensource.org/license/mit/\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscriptin%2Fjmdict-simplified","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fscriptin%2Fjmdict-simplified","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscriptin%2Fjmdict-simplified/lists"}