{"id":28939082,"url":"https://github.com/sc-voice/ebt-deepl","last_synced_at":"2026-01-22T19:50:49.119Z","repository":{"id":213471691,"uuid":"734193990","full_name":"sc-voice/ebt-deepl","owner":"sc-voice","description":"Javascript library for EBT translation using DeepL","archived":false,"fork":false,"pushed_at":"2025-10-05T21:14:34.000Z","size":1613,"stargazers_count":1,"open_issues_count":1,"forks_count":1,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-10-05T23:28:10.618Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sc-voice.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2023-12-21T05:11:34.000Z","updated_at":"2025-10-05T21:14:38.000Z","dependencies_parsed_at":"2023-12-21T08:24:48.322Z","dependency_job_id":"d515821e-f967-46d3-bb04-3de9b3066dd1","html_url":"https://github.com/sc-voice/ebt-deepl","commit_stats":null,"previous_names":["sc-voice/ebt-deepl"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/sc-voice/ebt-deepl","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sc-voice%2Febt-deepl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sc-voice%2Febt-deepl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sc-voice%2Febt-deepl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sc-voice%2Febt-deepl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sc-voice","download_url":"https://codeload.github.com/sc-voice/ebt-deepl/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sc-voice%2Febt-deepl/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28669730,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-22T19:36:09.361Z","status":"ssl_error","status_checked_at":"2026-01-22T19:36:05.567Z","response_time":144,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":[],"created_at":"2025-06-23T00:01:42.890Z","updated_at":"2026-01-22T19:50:49.113Z","avatar_url":"https://github.com/sc-voice.png","language":"JavaScript","funding_links":[],"categories":["Awesome DeepL"],"sub_categories":["Translation and localization tools"],"readme":"# ebt-deepl\nThe ebt-deepl repository is a Javascript library \nfor Early Buddhist Texts (EBT) translation using DeepL.\n\nTranslation is difficult. It is difficult because definitions\nare fluid as they are adapted to communicate societal needs\nand desires. And when societal needs and desires change \nquickly, as they are today, the translation also has to \ndeal with the communication gaps between living generations \nwithin a single society.\nFor an internet world, that translation problem is global.\nTranslating texts takes time. Translation takes years. \nAnd in those long years, a new generation will be born,\na new generation that will grow up to create their own\nterms and catch phrases, unknowing and unwilling \nto learn the words for the needs and desires of \nolder generations.\n\nYet in that stormy flood of change, there are invariants.\nThe invariants that remain do so regardless of the names\nby with which they are painted. \nPraised, reviled, ignored, remembered or forgotten,\nthose invariants stand true through the generations,\nthrough the ages. \n\nAnd, if we are to understand each other, \nwe have to start with those invariants.\nIndeed, reliable communication relies on shared, \nverifiable truths. The security of the internet\nitself relies on shared verifiable truths.\nFor the internet, those truths are SSL certificates.\nBut to understand each other meaningfully,\nwe need to talk about _meaningful_ truths.\n\nWhat is meaningful?\n\nWell, judging from the internet, there appears to\nbe a lot of meaningless drama in the world. \nThere is a lot of suffering. \nAnd if suffering is a problem,\nthen if there was an end to suffering, perhaps\nthat might be something good to talk about.\nIndeed, the internet devotes a lot of bandwidth\nto various purported means of ending suffering. \nWe have pop-up ads and we have math videos.\nOddly, pop-up ads claim to end suffering but\nrarely do, whereas math videos exclude\nsuffering from discourse since suffering is\nnot a computable axiom.\n\nInterestingly, thousands of years ago, someone\ndid talk about noble truths. In fact, that\nvery notable person did call them Noble Truths\nand declared them to be self-verifiable.\nAnd thousands of years later, people are still\nfinding those Noble Truths meaningful.\n\n\u003e [DN1:1.3.2](https://suttacentral.net/dn1/en/sujato#dn1:1.3.2): “It’s incredible, reverends, it’s amazing how the diverse convictions of sentient beings have been clearly comprehended by the Blessed One, who knows and sees, the perfected one, the fully awakened Buddha.\n\nOne of the most fascinating things about these\nNoble Truths is that they have survived\nand flourished with repeated translation.\nThey have remained meaningful through generations\nand ages. In other words, the Four Noble Truths,\nmight be a remarkable basis for translation\nand communication about meaningful topics.\nSo although we could talk about things like\npainting ourselves to look young, \nwe might instead \nwish to talk about ending suffering \nreliably and verifiably.\n\nBut wait. We need more than four truths\nfor translation. Bummer.\n\nWell, math found a solution to a paucity of truth.\nIt's called the proof. Math has few axioms and many\nproofs that extend those axioms in useful ways\nthat mathematicians discuss endlessly.\n\nCan the four Noble Truths be extended in the same\nway? Well, the EBTs do claim so:\n\n\u003e [MN80:16.5](https://suttacentral.net/mn80/en/sujato#mn80:16.5): Let a sensible person come—neither devious nor deceitful, a person of integrity. I teach and instruct them.  \n\u003e [MN80:16.6](https://suttacentral.net/mn80/en/sujato#mn80:16.6): Practicing as instructed they will soon know and see for themselves,\n\nIt would appear then that the Early Buddhist Texts\nmight prove to be a consistent, reliable, and verifiable \ncandidate for a contemporary translation basis.\n\nAnd why does that matter?\n\nWell, if we take a consistent,\nreliable, and verifiable basis for contemporary translation\nand feed it to a machine translator,\nwe might be able to understand each other better\nand talk about finding meaningful solutions \nto meaningful things...\n\n### DeepL\n[DeepL](https://deepl.com) is a state-of-the-art\nautomated translator. \nDeepL has a [glossary feature](https://support.deepl.com/hc/en-us/articles/360021634540-About-the-glossary-feature)\nthat supports the customization of vocabulary\nfor selected purposes.\nAnd the glossary feature is remarkably well-suited\nfor representing a large translation basis.\nDeepL allows for up to 5000 glossary entries,\nwhich provides a customizable basis of up to a solid [B2 level](https://preply.com/en/blog/english-language-levels/#:~:text=When%20you%20reach%20B1%2C%20you,pass%20the%20B1%20Cambridge%20examination.)\n\nAnd with DeepL customized this way, \nwe could talk together,\nif we wanted to, about\neveryday things and about meaningful things.\n\n\u003e [iti75:5.2](https://suttacentral.net/iti75/en/sujato#iti75:5.2): It’s when some person gives to everyone—whether ascetics and brahmins, paupers, vagrants, nomads, or beggars—such things as food, drink, clothing, vehicles; garlands, perfumes, and makeup; and bed, house, and lighting.\n\n### The EBT-DeepL project \n\nThe EBT-DeepL project is still in a research phase\nresearching how to create\na reliable translation basis using the EBTs.\nIn particular, we have found it quite useful to \nrely on the semantic web of meaning \ndiscovered in \n[curated EBT examples](https://github.com/ebt-site/ebt-data/tree/published/examples).\nThe EBT examples guide EBT readers through\nmodern translations of the Pali Early Buddhist Texts\nfound on [SuttaCental](https://suttacentral.net).\n\nWhat the EBT examples reveal is the remarkable attention to\nconsistency in the authoring of the prose EBTs.\nTerms are repeated throughout the EBTs\nand used quite consistently with remarkable nuance,\nin contexts both broad and deep.\nSearching for EBT examples reveals\nan amazingly rich semantic web that has\nassisted and guided ongoing human translation efforts\nover the ages. \nIndeed, the process of translation itself\nfosters additional discussions which\nreveal deeper connections within the EBTs.\nBecause of this, we rely on the EBT examples \nto guide our efforts in building\nthe EBT-DeepL glossaries.\n\nBriefly, our process is simple:\n\n1. Choose an example\n1. Choose a short document with that example\n1. Compare the DeepL translation with the human EBT translation\n1. Update the DeepL glossaries with the guidance of human EBT translators\n1. Publicly provide DeepL translations with [MIT License](https://opensource.org/license/mit/), thereby allowing human EBT translators to refine their own translations.\n1. Repeat with another example\n\nFinally, we are very grateful to Bhante Sujato\nand the entire SuttaCentral community \nfor their joint work in continuosly translating\nthe Early Buddhist Texts for all to read.\n\n### Create DeepL account\n\n* Login to your [DeepL account](https://deepl.com) and use the top-right menu to open your ```Account``` settings\n* Choose the ```Account``` tab to show your authentication key\n* Copy the authentication key\n\n### Clone and test repositiory\n\n```\ngit clone https://github.com/sc-voice/ebt-deepl.git\nnpm install\nmkdir local\necho YOUR_AUTHENTICATION_KEY \u003e local/deepl.auth\nnpm run test\n```\n\n\n### Translate a sutta\n\nEBT-DeepL translates from two sources having consistent and extensive Pali EBT coverage.\nThe first source by default is Bhante Sujato's EN translations.\nThe second source by default is Ayya Sabbamitta's DE translations.\nDeepL translations will be provided for both translation sources.\nA human reference is also useful--by default the reference\nauthor will be a Bilara author having\nexisting consistent, segmented EBT translations.\nFor example, the reference for PT is laera-quaresma \nand the reference for FR is noeismet.\nReferences are not translated by DeepL--they are simply shown\nin the output to aid in verification.\nThe Pali MS segmented text is also shown in the output\nfor an absolute reference of comparison.\n\nTo translate a sutta to portuguese, try this:\n\n```\nscripts/translate.mjs -dl pt an3.49\n\n```\n\nFor a description of the options to translate.mjs:\n\n```\nscripts/translate.mjs --help\n```\n\n### Glossaries and Transforms\n\nGlossaries and transforms are located in \u003ckbd\u003esrc/glossary\u003c/kbd\u003e:\n\n* Glossary files have the form \u003ckbd\u003eebt_SRCLANG_DSTLANG.kvg\u003c/kbd\u003e\n* Transform files have the form \u003ckbd\u003etransform_SRCLANG.json\u003c/kbd\u003e\n\n#### Glossary\n\nGlossary files are turned into \n[DeepL Glossaries](https://support.deepl.com/hc/en-us/articles/360021634540-About-the-glossary-feature) \nusing the DeepLAPI.\nAn uploaded glossaries will always replace the previous version.\nYou'll always have a current glossary for your translations.\n\n#### Transform files\nTransform files are handled only by EBT-DeepL. \nTransform files are written in JSON:\n\n```\n{\n  \"Mönch oder eine Nonne\": \"Moench\",\n  \"SRC_PATTERN\": \"REPLACEMENT\"\n}\n```\nEach entry in a transform file consists of a key/value pair.\nThe key will be converted into a \n[Javascript regular expression pattern](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_expressions).\nThe value is the replacement.\n\nIf a transform file exists for a source language,\nall source text read by EBT-DeepL will be \ntransformed by replacing text matching \nthe regular expressions with their corresponding replacements.\n\nA transform is useful when DeepL glossaries fail. \nFor example, DeepL ignores \"Mönch\" glossary entries,\nbut happily accepts and converts \"Moench\" glossary entries.\n\nA transform is a useful hack that can steer DeepL when it feels stubborn.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsc-voice%2Febt-deepl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsc-voice%2Febt-deepl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsc-voice%2Febt-deepl/lists"}