FLESHNOTE / DOCS / NLP & INTELLIGENCE / LANGUAGE SUPPORT MATRIX

Language Support Matrix & Rules

MULTILINGUAL

Detailed audit of per-language NLP capabilities, custom grammatical rules (agglutination, Slavic inflections), and blueprints for contributing missing languages.

Language Capabilities Matrix #

While FleshNote's user interface is localized in multiple languages, deep NLP features (The Janitor, Show Don't Tell, passive voice detection, 5-senses stemming, and geographical name generation) require specialized grammatical rules per language:

Language UI Localized spaCy Model The Janitor (9 Analyzers) Show Don't Tell (SDT) 5-Senses Stemming Name & Place Morphology
English (en) βœ” Full en_core_web_sm βœ” Complete βœ” 4 Detectors βœ” Supported βœ” `en.py` + CSV
Hungarian (hu) βœ” Full huspacy (hu_core_news_lg) βœ” Complete (hun_janitor.py) βœ” Em-dash dialogue + Agglutinative SDT βœ” `HU_SENSES_STEMS` βœ” `hu.py` + 68KB CSV
Polish (pl) βœ” Full pl_core_news_sm βœ” Complete (pol_janitor.py) βœ” Slavic inflections + SDT βœ” `PL_SENSES_STEMS` βœ” `pl.py` + 21KB CSV
Arabic (ar) βœ” Full (RTL) spacy.blank("ar") ⚠ Partial (Basic checks) βœ– Missing βœ– Missing βœ– Missing
German (de) βš™ In Progress de_core_news_sm (Planned) βœ– Missing (Needs `de_janitor.py`) βœ– Missing βœ– Missing βœ– Missing
French (fr) βš™ In Progress fr_core_news_sm (Planned) βœ– Missing (Needs `fr_janitor.py`) βœ– Missing βœ– Missing βœ– Missing
Spanish (es) βš™ In Progress es_core_news_sm (Planned) βœ– Missing (Needs `es_janitor.py`) βœ– Missing βœ– Missing βœ– Missing
Swedish (sv) βš™ In Progress sv_core_news_sm (Planned) βœ– Missing (Needs `sv_janitor.py`) βœ– Missing βœ– Missing βœ– Missing

Hungarian Linguistic Engineering (`hun_janitor.py`) #

Hungarian is an agglutinative Uralic language with complex suffix chaining and non-standard dialogue formatting:

  • Dialogue Em-Dash Boundary: Hungarian literature uses em-dashes (β€” or –) for spoken lines instead of English quotation marks ("..."). _is_dialogue_hu recognizes both patterns.
  • Weak Adverb Suffixes: Flags adverbial suffixes -an/-en/-ul/-ΓΌl modifying verb heads, filtering grammatical conjunctions like "mikΓΆzben".
  • Passive Verbal Adverbs: Detects hatΓ‘rozΓ³i igenΓ©v (-va/-ve) on ADV/VERB tokens while exempting fixed prepositions like "kivΓ©ve" (except).
  • Stem-Based 5 Senses: Counts sensory root words (lΓ‘t-, hall-, szag-, tapint-, Γ­z-) across all declensions.

Polish Linguistic Engineering (`pol_janitor.py`) #

Polish is a synthetic Slavic language featuring high inflection across 7 grammatical cases:

  • Passive Auxiliaries: Flags constructions using byΔ‡ (to be) or zostaΔ‡ (to become) followed by a past passive participle.
  • Manner Adverb Rules: Matches manner adverbs ending in -o/-ie modifying speech or action verbs (e.g. "powiedziaΕ‚ cicho").
  • Stem Prefix 5 Senses: Evaluates inflected Polish roots (widz-, sΕ‚ysz-, wΔ…ch-, dotyk-, smak-).

Contributor Blueprint: Adding a New Language #

Per the Contributor Priorities Guide, linguistic contributions are among our highest priority needs. To implement full NLP support for a missing language (e.g., German, French, Italian):

Checklist for New Language Modules:
  1. Add the spaCy model mapping in backend/spacy_config.py (e.g. "de": "de_core_news_sm").
  2. Create backend/routes/{lang}_janitor.py implementing linking, speech, filter, and cognitive realize verb lexicons.
  3. Implement the language's passive voice construction logic and weak adverb suffix patterns.
  4. Provide the 5-senses stem lexicon tuple (Sight, Sound, Smell, Touch, Taste).
  5. Create backend/tools/name_gen/location_langs/{lang}.py defining geographical prefixes, roots, and suffixes.
  6. Provide a real name database CSV in backend/tools/name_gen/data/real/{language}.csv.
On This Page