Locale Separator and Digit Characters — literal specimens
Every separator, sign and digit set a locale-aware formatter has to survive, each present literally between ASCII guards: the no-break and narrow-no-break spaces, de-CH's U+2019 group separator, the Arabic decimal and thousands separators, the four numbering systems' digits, and CLDR's U+2212 MINUS SIGN, which is not the ASCII hyphen.
Separator and digit characters used by locale-aware formatters
===============================================================
Each character below appears LITERALLY between the << >> guards. Guards are ASCII.
GROUP (THOUSANDS) SEPARATORS
U+002C COMMA <<,>> en-US, en-GB, en-IN, ja-JP, zh-CN
U+002E FULL STOP <<.>> de-DE, es-ES
U+00A0 NO-BREAK SPACE << >> pl-PL, ru-RU
U+202F NARROW NO-BREAK SPACE << >> fr-FR (changed from U+00A0 in CLDR 34)
U+2019 RIGHT SINGLE QUOTATION MARK <<’>> de-CH (an apostrophe-LOOKING character, not U+0027)
U+066C ARABIC THOUSANDS SEPARATOR <<٬>> ar-EG and other 'arab' numbering locales
DECIMAL SEPARATORS
U+002E FULL STOP <<.>> en-*, ja-JP, zh-CN, de-CH
U+002C COMMA <<,>> de-DE, fr-FR, es-ES, pl-PL, ru-RU
U+066B ARABIC DECIMAL SEPARATOR <<٫>> ar-EG
THE GAP BETWEEN AN AMOUNT AND ITS CURRENCY SYMBOL
U+00A0 NO-BREAK SPACE << >> de-DE, fr-FR, es-ES, pl-PL, ru-RU, de-CH
(none) en-US, en-GB, en-IN, ja-JP
DIGIT SETS (CLDR numbering systems)
latn 0 1 2 3 4 5 6 7 8 9 <<0123456789>>
arab U+0660..U+0669 <<٠١٢٣٤٥٦٧٨٩>> Arabic-Indic, default for ar-EG
arabext U+06F0..U+06F9 <<۰۱۲۳۴۵۶۷۸۹>> Extended Arabic-Indic, default for fa-IR
deva U+0966..U+096F <<०१२३४५६७८९>> Devanagari, selectable for hi-IN
PERCENT AND SIGN CHARACTERS
U+0025 PERCENT SIGN <<%>>
U+066A ARABIC PERCENT SIGN <<٪>>
U+2212 MINUS SIGN <<−>> CLDR's minus is NOT U+002D HYPHEN-MINUS
U+002D HYPHEN-MINUS <<->>
WHAT TO ASSERT
--------------
1. Reading this file and extracting each << >> block yields exactly the code point named on the
same line — no normalisation has folded U+00A0 to U+0020 or U+2019 to U+0027.
2. Your number parser accepts every group separator listed and returns 1234567 for a string built
from any of them.
3. Your digit mapper turns each non-latn digit set back into 0-9.
4. A round trip through your storage layer (JSON, CSV, a database column) preserves U+202F and
U+00A0 rather than collapsing either to a plain space.
Specifications
- Group Separators
- 6
- Decimal Separators
- 3
- Digit Sets
- latn, arab, arabext, deva
- Code Points
- U+00A0, U+202F, U+2019, U+066B, U+066C, U+066A, U+2212
- Guard
- << >> ASCII delimiters around each specimen
- Encoding
- UTF-8
- Seed
- 20260807
- Wave
- p7
- Line Endings
- LF
Testing contract
Reference control- Scenario
- Extract each << >> block, compare it with the code point named on the same line, then round-trip the file through JSON, CSV and your database column.
- Expected result
- U+00A0 has not been folded to U+0020, U+2019 has not been folded to U+0027 by a smart-quote filter, and every non-latn digit set maps cleanly back to 0-9.
What is a .txt file?
TXT is a plain-text file containing unformatted character data with no styling or structure beyond line breaks. Its interpretation depends on character encoding, most commonly UTF-8, and on line-ending convention. It is the most universal and portable text container.
How to use this file
Use an example TXT to test encoding detection, line-ending (LF versus CRLF) handling, and any tool that reads or streams raw text input.
How to use this file for testing
“Locale Separator and Digit Characters — literal specimens” is a deterministic Novus Examples fixture for Internationalization, Encoding detection, Localization catalogs. Parallel text and accented, multi-script content — for testing translation pipelines, Unicode handling, and localization tooling.
Documented properties for this file: seed 20260807 · UTF-8 · LF. Compare results against paired or grouped companions on this page when present (clean↔damaged, searchable↔scanned, or format twins) so scores stay reproducible across runs.
Download the file once, keep the path stable in CI or local scripts, and treat the spec table as the contract: dimensions, seeds, field lists, and roles are intentional. Corrupt or invalid samples are labelled as such — expect parsers to fail loudly rather than silently accept them.
Translation-catalog fixtures carry the same message set across formats, each with its native placeholder syntax. Test your i18n loader, catalog converter, or translation-memory tool, and use the RTL and CJK variants to check bidirectional text and Unicode handling.
Load the catalog with your i18n framework and verify placeholder interpolation and plural handling; the RTL and CJK variants exercise bidirectional text and font fallback.
Related files
- stringsApple .strings — UTF-16 LE with BOM (Japanese)The encoding fixture the .strings format needs: a Japanese catalog written as UTF-16 Little Endian with a byte-order mark, which is what Xcode has historically produced and what a UTF-8-only reader turns into mojibake or a decode error. Also carries full-width punctuation and an ideographic space for width and line-breaking tests.

- txtBidi — bracket mirroring in RTL paragraphs (Hebrew and Arabic)Mirroring is a rendering property of the bidi algorithm, not a transformation of the text: a U+0028 LEFT PARENTHESIS inside an RTL run is DRAWN as ')' while the stored byte never changes. These Hebrew and Arabic lines make that testable, and list the neutral characters that look like they should mirror but do not.

- txtBidi — where a mark is actually required (Arabic)Six Arabic sentences containing a Latin filename, a phone number, a version range, a mixed-script path, a percentage and a bracketed insertion — each shown first as a translator usually delivers it and then with the one invisible character that makes it render correctly. The two forms differ by exactly one code point.

- csvBilingual CSV — English→Arabic RTLBilingual EN→AR RTL CSV SAMPLE for spreadsheet CAT and RTL review tools.

- csvBilingual CSV — English→SpanishBilingual EN→ES CSV SAMPLE for spreadsheet-based localization workflows.

- jsonCrowdin-Style Export — FrenchCrowdin-shaped SAMPLE French bilingual export for TMS round-trip tests.

Generated by generation/localization_p7.py. Free for any use, no attribution required — license.