Skip to content

Loanword suffixes — 2026-10-01 ​

This update implements the first correction slice from the completed source-assisted development review. It joins recognized English loanword stems to a finite set of Nepali endings, adds media → मिडिया and exposes स्कूल as an alternative while keeping school → स्कुल first. The default engine and Nepali-enabled browser fields use the same rule. English mode and recognized addresses keep their existing literal behavior.

The research ledger records sources, access dates, observed forms, mapping decisions and limits. These are source-assisted project typing conventions, authorized for implementation. They are not independent human reviews, an exhaustive loanword dictionary or a representative accuracy estimate. Earlier pilot, expansion and development baseline records retain their dated counts and outputs.

Behavior and scope ​

InputDefaultCandidates
companyharumathiकम्पनीहरूमाथिकम्पनीहरूमाथि
schoolmaस्कुलमास्कुलमा, स्कूलमा
mediasangaमिडियासँगमिडियासँग
camerakoक्यामेराकोक्यामेराको
companyharukoकम्पनीहरूकोकम्पनीहरूको

There are 51 recognized English loanword stems: the earlier 50 plus media. The typing reference lists them. There are 19 suffix keys:

Base ending keyNative ending
maमा
koको
kaका
kiकी
leले
laiलाई
bataबाट
sangaसँग
mathiमाथि
haruहरू

The nine additional keys are haruma, haruko, haruka, haruki, harule, harulai, harubata, harusanga and harumathi: plural हरू followed by one of the other nine endings. These are complete typing keys; no repeated or recursive ending chain is recognized. sangai, cameramaa and extra chains remain outside this slice.

The rule preserves each stem’s full Unicode spelling and joins the ending directly. It does not remove final vowels, insert a virama, select genitive agreement or decide whether a phrase is grammatical. For example, कम्पनी keeps its final ी in कम्पनीहरूको, and मिडिया keeps its final ा in मिडियासँग. The short ASCII suffix keys are explicit project input conventions; they do not change the fallback’s ordinary short/long vowel rules.

school and its recognized attached forms return the short-u reading first and long-u reading second. Both spellings are attested in institutional material; the order preserves the existing default rather than claiming a frequency or normative ranking. Other source-observed loanword variants remain outside the built-in alternatives in this change.

Lookup and customization ​

The implementation holds an explicit stem catalogue and finite suffix map. The core lookup gives an exact normalized entry priority, then tries the recognized stem plus complete ending. Ordered stem readings come from the current engine’s dictionary, so customization applies without a separate suffix API.

js
import { createEngine, convertWord } from 'sahajlipi';

const engine = createEngine({
  entries: {
    school: ['स्कूल', 'स्कुल'],
    schoolma: ['विद्यालयमा'],
  },
});

engine.convertWord('schoolko').candidates; // ['स्कूलको', 'स्कुलको']
engine.convertWord('schoolma').candidates; // ['विद्यालयमा'] — exact entry wins
convertWord('schoolma').candidates;        // ['स्कुलमा', 'स्कूलमा']

Only recognized stems participate. Adding mybrand as a custom entry does not create suffix forms for mybrandma; use an exact custom entry for that form. Month names and ordinary native Nepali entries do not gain this derivation.

A recognized stem reading containing only ASCII Latin letters retains the Roman ending. For example, company: ['company'] produces literal companyma; a mixed candidate list ['संस्था', 'company'] produces ['संस्थामा', 'companyma']. Other custom strings receive the native ending verbatim. The engine does not validate custom script or repair its vowel/virama boundaries; use exact compound entries when specialized joining is needed.

Normalization still preserves reserved T, D, S, R and contextual H. Companyma normalizes to the recognized lowercase form, while Schoolma keeps the explicit S sound and uses ordinary conversion unless an exact custom entry exists. Explicit marks retain their segment processing and single-reading behavior. Technical-span preservation happens outside word lookup: companyma.com and schoolma@example.com remain literal in convertText and attached fields. Disabling an adapter keeps subsequent input literal and does not rewrite existing text.

During live typing, an unfinished ending may temporarily use the phonetic fallback. Once a complete supported ending is present, the adapter re-evaluates the active Roman spelling and displays the derived form. Backspace, candidates, paste and undo use the existing shared engine and editing paths; no separate browser suffix dictionary is introduced.

Evidence and inference ​

The original research pass inspected published Nepali usage and instructional material without consulting current engine diagnostics. The three reviewed failure targets came from the frozen development references; this is development-led work, so its comparison cannot be presented as a held-out evaluation.

Direct examples include कम्पनीमा / कम्पनीको from the Office of Company Registrar registration guide, कम्पनीहरू / कम्पनीहरूको / कम्पनीहरूले from its scope page, and कम्पनीबाट / कम्पनीलाई from its monitoring page. An original Nepali textbook chapter explains joining मा and spatial endings, with examples including स्कुलमा and टेबलमाथि. Its genitive chapter explains को / की / का agreement with the possessed noun; the converter leaves that choice to the typed ending.

Nepal Police’s original article directly attests मिडिया and मिडियासँग. The APF Women’s Association directly uses both स्कुलमा and स्कूलमा. Exact कम्पनीहरूमाथि was corroborated only in a search-indexed excerpt of a Nepal Telecom financial report; the full PDF and visual page were not inspected. Its limited access scope remains disclosed alongside direct support for the plural and spatial components.

The finite haru plus one-ending combinations are productive project derivations from attested morphology. Every generated stem–ending pair was not separately verified against a source. A mechanical spelling output is not a guarantee that the form fits a sentence or English sense. media uses the communication/media reading; other English meanings receive no context-sensitive interpretation.

All evidence below was checked 2026-10-01. The ledger retains the exact access scope; indexed PDF excerpts are distinct from directly opened HTML.

IDOriginal sourceAccess scopeShort observed forms
LS01Office of Company Registrar — registration informationdirect-htmlकम्पनीमा, कम्पनीको, कम्पनीले, कम्पनीका
LS02Office of Company Registrar — scope of workdirect-htmlकम्पनीहरू, कम्पनीहरूको, कम्पनीहरूले
LS03Office of Company Registrar — monitoring arrangementsdirect-htmlकम्पनीबाट, कम्पनीलाई, कम्पनीहरूलाई
LS04Introduction to the Nepali Language — Chapter 6 Unit 4 Grammar Focusdirect-htmlटेबलमा, टेबलमाथि, कक्षामा, स्कुलमा, अफिसमा
LS05Introduction to the Nepali Language — Chapter 4 Unit 4 Grammar Focusdirect-htmlतपाईंको, तपाईंकी, तपाईंका, उनीहरूको
LS06Nepal Police — information dissemination by central spokespersondirect-htmlमिडिया, मिडियासँग
LS07Armed Police Force Women’s Association — activitiesdirect-htmlस्कुलमा, स्कूलमा, स्कुलको, स्कुलका
LS08Nepal Telecom — consolidated financial statements 2077/78search-indexed-pdf-excerptकम्पनीहरूमाथि
LS09Nepal Law Journal — decision 9344direct-htmlकम्पनीसँग, कम्पनीहरूलाई
LS10Nepal Police — social media character-assassination arrest reportdirect-htmlभिडियोको
LS11Suryodaya Municipality — coffee crop FAQdirect-htmlकफीको, कफीका, कफीमा, कफीलाई
LS12Radio Nepal — Jhankar 2079 annual publicationsearch-indexed-pdf-excerptरेडियोमा

Coffee and radio edge-case evidence is included as research context. coffee is not added as a recognized stem. Neither complete source articles nor raw corpora are redistributed.

Recorded comparison ​

The machine report compares baseline commit d3bb77f39f78b436d613424e78979b0357d8d7da with the suffix engine on the same frozen final contract fixture and unchanged reviewed development references. It records source/tool hashes, engine identities, runtime, fixture hashes, original batch and frozen ledger identities, exclusions and per-case outcomes.

MetricBeforeAfter
Revised final seed contracts131/137137/137
Seed word default matches101/106106/106
Seed required candidate references103/109109/109
Seed complete text matches30/3131/31
Four newly added suffix contracts0/44/4
Historical frozen seed contracts133/133131/133
Reviewed word default matches any reference8/7411/74
Word cases with any reference in candidates8/7411/74
Word cases with all references in candidates7/7410/74
Individual word-reference candidate coverage8/7912/79
Reviewed preferred word default7/699/69
Exact complete reviewed sentences0/120/12

The three target word cases now match the frozen references. Complete sentences still differ because other words, vowels, nasals and spelling alternatives remain unresolved by this slice.

The final seed fixture contains 137 contracts and two exploratory cases. Four contracts are added for the three reviewed target words and text conversion beside addresses. Two existing software expectations intentionally change: bankma now expects बैंकमा and fileharu expects फाइलहरू, replacing their earlier phonetic-fallback targets. Their IDs, inputs, statuses, categories and original provenance prefixes remain intact; each revised provenance discloses the policy change. 133 of the 135 prior rows remain byte-for-byte identical.

The historical frozen fixture is scored separately: its two earlier suffix-fallback targets are the only changed outputs (133/133 → 131/133). The revised final fixture scores 131/137 → 137/137 on the same declared new targets. This separates intentional behavior revisions from improvements on unchanged references rather than presenting the old fixture as fully preserved. These selected software contracts measure promised behavior. They do not measure word frequency, population linguistic accuracy or performance.

The reviewed development comparison keeps the same 74 word cases / 79 word references and 12 sentence cases / 13 sentence references. The 14 exclusions remain excluded and original references are not revised to favor the new engine. Independent human review remains pending, and the cases guided this implementation. The unchanged-reference gains are descriptive development results, not held-out or population accuracy.

Implementation validation ​

The local run on 2026-10-01 passed 296/296 Node tests, 137/137 seed contracts, and 57/57 desktop browser checks (19 scenarios in each of Chromium, Firefox and WebKit). The desktop-004 record preserves the tested runtime/test hashes, engine versions and installed-tarball identity. Installed-package JavaScript imports, strict TypeScript consumers, and the bundled vanilla/React examples also passed. The website build and publication checks passed.

The suffix browser scenarios check Roman-source Backspace editing, spelling selection, address restoration and English mode. As in the earlier adapter, entering a domain cue makes the token literal; deleting that cue resumes the preferred spelling, rather than remembering a previously selected alternative. Ordinary punctuation and whitespace still preserve a selected reading. These checks cover the documented desktop flows only.

Reproduce ​

Use a checkout of the suffix change and regenerate the pinned original benchmark/data/review-batch-001/cases.jsonl using the review-batch instructions. Its SHA-256 must be 2f92bcf5a16d35b6a31dca052e4e358ffe417b5dcec0e8cc704d17f8acbf23e3; do not regenerate into a directory holding edited review sheets.

sh
SUFFIX_BASELINE_DIR=$(mktemp -d)
git archive d3bb77f39f78b436d613424e78979b0357d8d7da \
  src package.json benchmark/cases.jsonl benchmark/run.js benchmark/reports \
  | tar -x -C "$SUFFIX_BASELINE_DIR"
node benchmark/measure-loanword-suffixes.js "$SUFFIX_BASELINE_DIR" \
  --cases benchmark/data/review-batch-001/cases.jsonl \
  --output benchmark/data/loanword-suffixes-current.json

npm test
npm run benchmark -- --check
npm run benchmark:source-reviewed

The measurement command checks the frozen fixture, baseline core and review-source identities. It compares every admitted development reference exactly, preserving vowels, joiners, punctuation and spacing. Use a fresh output path; it refuses an existing report. Reproducing the dated result requires the recorded source hashes, rather than a later engine with the same command. The generic source-review command measures the current engine against the original frozen review ledger.

Selected adapter and desktop browser regressions verify live editing, candidate selection, protected addresses and English mode separately. Those functional checks do not certify mobile keyboards, installed IMEs or every framework. The browser guide retains the broader tested scope and limits.

Open source. Nepali first. Experimental developer alpha on npm.