Language & Locale

March 6, 2026 · View on GitHub

🏥 Quick Return to Emergency Room

You are in a specialist desk.
For full triage and doctors on duty, return here:

Think of this page as a sub-room.
If you want full consultation and prescriptions, go back to the Emergency Room lobby.

Stabilize multilingual RAG and reasoning across CJK, RTL, Indic, Latin, emoji, and locale variants.
This hub localizes language-layer failures and routes you to the exact structural fix. No infra change required.


What this page is

  • A compact language-aware repair guide for retrieval → ranking → reasoning.
  • Structural fixes with measurable acceptance targets.
  • Store-agnostic. Works with FAISS, Redis, pgvector, Elastic, Weaviate, Milvus, and more.

When to use

  • Corpus spans CJK or Indic scripts and retrieval keeps missing the correct section.
  • Queries code-switch or mix scripts, and top-k order drifts across runs.
  • Accents/diacritics or fullwidth/halfwidth forms break matching or citations.
  • RTL punctuation or control chars flip token order or offsets.
  • Token counts jump after deploy even though data did not change.

Open these first


Quick routes to per-page guides

TopicPage
Tokenizer mismatch across languagestokenizer_mismatch.md
Script mixing in a single queryscript_mixing.md
Locale drift and analyzer skewlocale_drift.md
Unicode normalization policyunicode_normalization.md
CJK segmentation and word-breakcjk_segmentation_wordbreak.md
Fullwidth vs halfwidth, punctuation variantsdigits_width_punctuation.md
Diacritics folding rulesdiacritics_and_folding.md
RTL and bidi control charactersrtl_bidi_control.md
Transliteration and romanizationtransliteration_and_romanization.md
Collation and stable sort keyslocale_collation_and_sorting.md
Numbering systems and sort ordersnumbering_and_sort_orders.md
Date and time format variantsdate_time_format_variants.md
Time zones and DST stabilitytimezones_and_dst.md
Keyboard IMEs and compositionkeyboard_input_methods.md
Input language switching guardsinput_language_switching.md
Emoji, ZWJ, grapheme clustersemoji_zwj_grapheme_clusters.md
Mixed-locale metadata fieldsmixed_locale_metadata.md

Acceptance targets

  • ΔS(question, retrieved) ≤ 0.45 on three paraphrases
  • Coverage of target section ≥ 0.70
  • λ remains convergent across two seeds
  • Tokenization variance for the same query ≤ 12% across environments
  • Normalization pass rate for NFKC + width + diacritics ≥ 0.98

Fix in 60 seconds

  1. Normalize once, up front → Apply NFKC, collapse fullwidth/halfwidth, unify diacritics.
  2. Match tokenizer and analyzer → Same segmenter for CJK/Indic across embed + store analyzers.
  3. Stabilize mixed-script queries → Detect code-switch, split per script, rerank deterministically.
  4. Verify → ΔS ≤ 0.45, Coverage ≥ 0.70, λ convergent across two seeds.

FAQ (Beginner-Friendly)

Q1: Why do answers break when I mix English and Chinese in one query?
A: Most vector stores tokenize differently by script. Without alignment, Chinese words get split incorrectly and English tokens dominate. Fix with script_mixing.md and tokenizer_mismatch.md.

Q2: What does “locale drift” mean?
A: Locale drift happens when environments use different analyzers (e.g., zh_TW vs zh_CN) so the same query splits differently. See locale_drift.md.

Q3: Why do “identical-looking” characters not match?
A: They may differ in width (fullwidth vs halfwidth), normalization (NFKC vs NFD), or diacritics. Always apply unicode_normalization.md and digits_width_punctuation.md.

Q4: How do I handle Arabic or Hebrew text?
A: RTL scripts can insert invisible bidi control chars that flip token order. See rtl_bidi_control.md.

Q5: Do I need different embeddings for each language?
A: No. You can combine multilingual embeddings with deterministic normalization and alias fields. If that fails, only then use fallback translation bridges.

Q6: How do I debug when results change between environments?
A: Compare tokenizer version, analyzer settings, normalization passes, and collation rules. Document them in data-contracts.md.


🔗 Quick-Start Downloads (60 sec)

ToolLink3-Step Setup
WFGY 1.0 PDFEngine Paper1️⃣ Download · 2️⃣ Upload to your LLM · 3️⃣ Ask “Answer using WFGY + <your question>”
TXT OS (plain-text OS)TXTOS.txt1️⃣ Download · 2️⃣ Paste into any LLM chat · 3️⃣ Type “hello world” — OS boots instantly

Explore More

LayerPageWhat it’s for
⭐ ProofWFGY Recognition MapExternal citations, integrations, and ecosystem proof
⚙️ EngineWFGY 1.0Original PDF tension engine and early logic sketch (legacy reference)
⚙️ EngineWFGY 2.0Production tension kernel for RAG and agent systems
⚙️ EngineWFGY 3.0TXT based Singularity tension engine (131 S class set)
🗺️ MapProblem Map 1.0Flagship 16 problem RAG failure taxonomy and fix map
🗺️ MapProblem Map 2.0Global Debug Card for RAG and agent pipeline diagnosis
🗺️ MapProblem Map 3.0Global AI troubleshooting atlas and failure pattern map
🧰 AppTXT OS.txt semantic OS with fast bootstrap
🧰 AppBlah Blah BlahAbstract and paradox Q&A built on TXT OS
🧰 AppBlur Blur BlurText to image generation with semantic control
🏡 OnboardingStarter VillageGuided entry point for new users

If this repository helped, starring it improves discovery so more builders can find the docs and tools.
GitHub Repo stars