Locale Currency Formats — eleven locales (CSV)
12345.60 in each locale's own currency, with the fraction-digit count and the symbol placement that produced it. JPY takes zero decimals and rounds; six rows separate the amount from the symbol with U+00A0 rather than a plain space; and ar-EG puts the amount in Arabic-Indic digits.
locale,currency,fractionDigits,formatted_12345_60,symbolPlacement
en-US,USD,2,"$12,345.60","symbol before, no space"
en-GB,GBP,2,"£12,345.60","symbol before, no space"
en-IN,INR,2,"₹12,345.60","symbol before, no space; 3,2,2 grouping above 5 digits"
de-DE,EUR,2,"12.345,60 €","symbol after, separated by U+00A0"
de-CH,CHF,2,CHF 12’345.60,"ISO code before, separated by U+00A0"
fr-FR,EUR,2,"12 345,60 €","symbol after; group U+202F, gap U+00A0"
es-ES,EUR,2,"12.345,60 €","symbol after, separated by U+00A0"
pl-PL,PLN,2,"12 345,60 zł","symbol after, separated by U+00A0"
ru-RU,RUB,2,"12 345,60 ₽","symbol after, separated by U+00A0"
ja-JP,JPY,0,"¥12,346",FULLWIDTH YEN U+FFE5 before; JPY has ZERO fraction digits
ar-EG,EGP,2,١٢٬٣٤٥٫٦٠ ج.م.,symbol after; CLDR wraps the whole pattern in U+200F RLM
Specifications
- Rows
- 11
- Columns
- 5
- Sample Value
- 12345.60
- Currencies
- USD, GBP, INR, EUR, CHF, PLN, RUB, JPY, EGP
- Fraction Digit Range
- 0 to 2 (3 documented in the JSON twin)
- Delimiter
- ,
- Header
- true
- Seed
- 20260807
- Wave
- p7
- Line Endings
- LF
Testing contract
Reference control- Scenario
- Assert each row's formatted value against your money formatter, then split each one back into amount and symbol.
- Expected result
- Splitting on U+0020 fails for the six NBSP rows, and a formatter that hard-codes two decimals renders JPY a hundred times too small.
What is a .csv file?
CSV (Comma-Separated Values) is a plain-text tabular format where rows are lines and fields are separated by commas, with quoting rules for values that contain delimiters, quotes, or newlines. It has no formal type system and depends on encoding and dialect conventions. It is the most portable format for tabular data exchange.
How to use this file
Use an example CSV to test parsers against quoting and embedded-delimiter edge cases, header handling, encoding detection, and import pipelines into databases or spreadsheets.
How to use this file for testing
“Locale Currency Formats — eleven locales (CSV)” is a deterministic Novus Examples fixture for Internationalization, CSV parsing, Encoding detection. Parallel text and accented, multi-script content — for testing translation pipelines, Unicode handling, and localization tooling.
Documented properties for this file: seed 20260807 · 11 rows · 5 columns · 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.
Code examples
import pandas as pd
df = pd.read_csv("currency-formats.csv")
print(df.head())
print(df.dtypes)Related files
- csvCSV — Shift-JIS JapaneseA Shift-JIS encoded Japanese CSV — for CJK charset detection and Shift-JIS→UTF-8 conversion in importers.

- txtLocale Separator and Digit Characters — literal specimensEvery 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.

- 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.

- csvBidi Test-Case Matrix — eight rendering casesA flat index of the bidi cases in this wave — which mark each one uses, what it should render as, and why the neutral characters involved need help. Row b8 is the control case with no marks, against which the other seven are compared.

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