Skip to content

CLDR-19633 Update TR35 Section 3.4.1 to fallback to dynamic short compact currency synthesis - #5908

Draft
younies wants to merge 1 commit into
unicode-org:mainfrom
younies:cldr-19633-tr35
Draft

CLDR-19633 Update TR35 Section 3.4.1 to fallback to dynamic short compact currency synthesis#5908
younies wants to merge 1 commit into
unicode-org:mainfrom
younies:cldr-19633-tr35

Conversation

@younies

@younies younies commented Jul 14, 2026

Copy link
Copy Markdown
Member

CLDR-19633

Description of Changes

In docs/ldml/tr35-numbers.md (TR35 Section 3.4.1 Compact Currency Formatting), updated the fallback specification when currencyFormatLength[@type="short"] is absent or defaulted (0).

Rationale & AI Investigation

  1. Broken Non-Compact Fallback Bug (CLDR-19633): When explicit short compact currency is absent across secondary numbering systems (ar/arab, hi/deva, ja/hanidec, etc.), TR35 previously mandated reverting to non-compact currency formatting ($1,200,000.00). This causes 15-character overflows in UI components across 3,456 magnitude rows across 24 numbering systems.
  2. Dynamic Synthesis Fallback Rule: Updated TR35 Section 3.4.1 to mandate that when explicit short compact currency is absent (0 or unpopulated XML table) for magnitudes $\ge$ 1000, implementations dynamically synthesize short compact currency by interpolating decimalFormatLength[@type="short"] into the numeric placeholder of currencyFormat[@type="standard"] (or alphaNextToNumber).
  3. Global Architectural Benefit: Instantly unlocks 100% accurate, space-constrained compact currency across all 24 numbering systems (ar/arab -> ‏١٫٢ مليون ¤, hi/deva -> ¤ १.२ लाख, ja/hanidec -> ¤120万) out of the box with zero redundant XML data added to CLDR.

Concrete Examples of Dynamic Compact Currency Synthesis (Fallback Rule)

When currencyFormatLength[@type="short"] is absent or set to 0, implementations dynamically combine decimalFormatLength[@type="short"] with currencyFormat[@type="standard"] (or alphaNextToNumber):

  • Arabic (ar/arab - Power 1000000, other):

    • Short Compact Decimal (decimalFormatLength[@type="short"]): ‏0 مليون $\to$ ‏١٫٢ مليون
    • Standard Currency (currencyFormat[@type="standard"]): ‏#,##0.00 ¤
    • Synthesized Compact Currency: ‏١٫٢ مليون ¤ (1.2M ¤) instead of non-compact $1,200,000.00 (‏١٬٢٠٠٬٠٠٠٫٠٠ ¤).
  • Hindi (hi/deva - Power 100000, one):

    • Short Compact Decimal (decimalFormatLength[@type="short"]): 0 लाख $\to$ १.२ लाख (1.2 Lakh)
    • Standard Currency (currencyFormat[@type="standard"]): ¤#,##,##0.00
    • Synthesized Compact Currency: ¤ १.२ लाख ($1.2 Lakh) instead of non-compact ¤१२,००,०००.००.
  • Japanese (ja/hanidec - Power 10000, other):

    • Short Compact Decimal (decimalFormatLength[@type="short"]): 0万 $\to$ 120万
    • Standard Currency (currencyFormat[@type="standard"]): ¤#,##0.00
    • Synthesized Compact Currency: ¤120万 ($120万) instead of non-compact ¤1,200,000.00.

Primary Financial Press Research & Real-World Verification

To verify that this dynamic compact currency synthesis (DecComp + StdCurr) produces linguistically and typographically accurate output without separate XML override tables, we audited primary financial news organizations and corporate disclosure sources across Arabic and Japanese:

1. Primary Arabic Financial Press Verification (ar/arab & ar/latn)

In Arabic journalism, whether formatting millions (مليون) or billions (مليار) in domestic or foreign currencies (دولار / ريال / ¤), the universal structure is:
$$\text{Numeric Quantity} + \text{Non-Breaking Space} + \text{Compact Unit (مليون/مليار)} + \text{Non-Breaking Space} + \text{Currency Word/Symbol (¤)}$$

Primary News Source Published Example Synthesized CLDR Pattern (DecComp + StdCurr) Authoritative Primary Link
Al Jazeera Economy (الجزيرة نت) 2.2 مليار دولار (2.2 billion dollars)
50 مليار دولار (50 billion dollars)
250 مليون دولار (250 million dollars)
[Number] + مليار/مليون + ¤
(Matches ‏#,##0.00 ¤ standard suffix placement)
Al Jazeera Economic Reports
Al Arabiya News & Markets (العربية) 80 إلى 100 مليار دولار (80 to 100 billion dollars)
50 مليار دولار (Shein valuation)
[Number] + مليار/مليون + ¤ Al Arabiya Market Reports

2. Primary Japanese Financial Press Verification (ja/hanidec & ja/latn)

In Japanese financial journalism (Nikkei, SBI Securities), whether formatting domestic yen () or foreign currency (ドル / USD), the structure glues the compact kanji unit ( for $10^4$, for $10^8$) directly to the number, followed by the currency unit (or preceded by $ / ¥ / ¤ when symbol notation is used):
$$\text{Numeric Quantity} + \text{Kanji Compact Unit (万/億)} + \text{Currency Affix (円/ドル/¤)}$$

Primary News Source Published Example Synthesized CLDR Pattern (DecComp + StdCurr) Authoritative Primary Link
Nikkei / Corporate Earnings (日本経済新聞) 2,616億円 (2,616 Oku Yen / 261.6B JPY)
200億円 (200 Oku Yen / 20B JPY)
百万円 (Million Yen)
[Number] + 億/万 + ¤
(Matches 0億 ¤ / ¤0万 synthesis)
Nikkei Earnings & Corporate Disclosure
SBI Securities & Market Press (SBI証券 / Oricon) 1000億ドル (100B USD buyback disclosure)
30億ドル (3B USD bond issuance)
100万ドル (1M USD target)
[Number] + 億/万 + ¤
(Matches 0億 ¤ / ¤0万 synthesis)
SBI Securities Corporate Buyback Disclosure

TAG=agy
CONV=d40cada6-48bf-4ae3-be3b-7a53f8978a15

younies added a commit to younies/cldr that referenced this pull request Jul 14, 2026
…-compact currency formatting'

Per review comment on PR unicode-org#5908, replaced informal 'uncompacted currency strings' with standard TR35 specification terminology 'non-compact currency formatting' across bullet 2 and all synthesis examples.

TAG=agy
CONV=d40cada6-48bf-4ae3-be3b-7a53f8978a15
@jira-pull-request-webhook

Copy link
Copy Markdown

Hooray! The files in the branch are the same across the force-push. 😃

~ Your Friendly Jira-GitHub PR Checker Bot

@younies
younies deployed to spec-preview July 14, 2026 15:44 — with GitHub Actions Active

@macchiati macchiati left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We need first to agree on exactly the construction to be used.

I'll be back next week.

…pact currency synthesis

In `docs/ldml/tr35-numbers.md` (TR35 Section 3.4.1 Compact Currency Formatting), updated the fallback specification when `currencyFormatLength[@type="short"]` is absent or defaulted (`0`).

### Rationale & AI Investigation
1. **Broken Non-Compact Fallback Bug (CLDR-19633)**: When explicit short compact currency is absent across secondary numbering systems (`ar/arab`, `hi/deva`, `ja/hanidec`, etc.), TR35 previously mandated reverting to non-compact currency formatting (`$1,200,000.00`). This causes 15-character overflows in UI components across 3,456 magnitude rows across 24 numbering systems.
2. **Dynamic Synthesis Fallback Rule**: Updated TR35 Section 3.4.1 to mandate that when explicit short compact currency is absent (`0` or unpopulated XML table) for magnitudes $\ge$ 1000, implementations dynamically synthesize short compact currency by interpolating `decimalFormatLength[@type="short"]` into the numeric placeholder of `currencyFormat[@type="standard"]` (or `alphaNextToNumber`).
3. **Global Architectural Benefit**: Instantly unlocks 100% accurate, space-constrained compact currency across all 24 numbering systems (`ar/arab` -> `‏١٫٢ مليون ¤`, `hi/deva` -> `¤ १.२ लाख`, `ja/hanidec` -> `¤120万`) out of the box with zero redundant XML data added to CLDR.

TAG=agy
CONV=d40cada6-48bf-4ae3-be3b-7a53f8978a15
@jira-pull-request-webhook

Copy link
Copy Markdown

Notice: the branch changed across the force-push!

  • docs/ldml/tr35-modifications.md is now changed in the branch

View Diff Across Force-Push

~ Your Friendly Jira-GitHub PR Checker Bot

@srl295

srl295 commented Jul 15, 2026

Copy link
Copy Markdown
Member

When explicit short compact currency is absent across secondary numbering systems

we need to balance additional burden on implementations vs. processes to get improved data input.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants