Take the 2-minute tour ×
User Experience Stack Exchange is a question and answer site for user experience researchers and experts. It's 100% free, no registration required.

The concept of formatting large numbers in an abbreviated fashion for casual, non-scientific display (e.g. 12,345 as "12.3k") is well explored on SE:

But none of these address internationalization & localization. Are there different standards for how to do this for other languages or locales? Especially:

  1. Are there different suffixes for different languages?
  2. How is this done differently for numbering systems with different grouping rules (e.g. China, Japan, India)?
share|improve this question

1 Answer 1

up vote 6 down vote accepted

There absolutely are different standards on giving large numbers in a short format.

Not a very human-friendly resource, but one developed for software developers, is the Common Locale Data Repository from the Unicode organization. They have all sorts of data for displaying things like numbers and dates in different locales (not just languages but regional variations of languages as well, as UK and US English may differ, for example). They have these files that outline how to format numbers in short ways.

If you go to their respository and open the file for the language you want, and you search through for "decimalFormats-numberSystem-latn", you'll find the short section that specifies how to format numbers in that language.

So, here's what you find for 'en_GB' (English for the UK):

  "short": {
    "decimalFormat": {
      "1000-count-one": "0K",
      "1000-count-other": "0K",
      "10000-count-one": "00K",
      "10000-count-other": "00K",
      "100000-count-one": "000K",
      "100000-count-other": "000K",
      "1000000-count-one": "0M",
      "1000000-count-other": "0M",
      "10000000-count-one": "00M",
      "10000000-count-other": "00M",
      "100000000-count-one": "000M",
      "100000000-count-other": "000M",
      "1000000000-count-one": "0B",
      "1000000000-count-other": "0B",
      "10000000000-count-one": "00B",
      "10000000000-count-other": "00B",
      "100000000000-count-one": "000B",
      "100000000000-count-other": "000B",
      "1000000000000-count-one": "0T",
      "1000000000000-count-other": "0T",
      "10000000000000-count-one": "00T",
      "10000000000000-count-other": "00T",
      "100000000000000-count-one": "000T",
      "100000000000000-count-other": "000T"
    }

Looking at the 'ja' file (for Japanese), you get something different:

  "short": {
    "decimalFormat": {
      "1000-count-other": "0千",
      "10000-count-other": "0万",
      "100000-count-other": "00万",
      "1000000-count-other": "000万",
      "10000000-count-other": "0000万",
      "100000000-count-other": "0億",
      "1000000000-count-other": "00億",
      "10000000000-count-other": "000億",
      "100000000000-count-other": "0000億",
      "1000000000000-count-other": "0兆",
      "10000000000000-count-other": "00兆",
      "100000000000000-count-other": "000兆"
    }

(If you see weird characters like å…† when you open it in your browser, you want to make sure you set your browser to show the file encoding as 'Unicode'.)

... It's not the most elegant solution, but it should help you find what you're looking for.

share|improve this answer
    
This is awesome. Now if only I knew of a library that knows how to leverage this... maybe ICU? –  jlarson Feb 1 at 0:47
1  
Looks like in ICU4J there's a (CompactDecimalFormat class)[icu-project.org/apiref/icu4j/com/ibm/icu/text/…. Hope that helps! –  Tim FitzGerald Feb 1 at 4:47
    
Interestingly, the standard doesn't seem to talk about how to handle negative numbers; and CompactDecimalFormat does not support them either. Any advice? –  jlarson Feb 3 at 17:28
    
and it doesn't seem to clearly support currency formatting either. –  jlarson Feb 3 at 18:03
    
CLDR documentation says "If your language uses different formats for negative numbers than just adding "-" at the front, you can put in two patterns, separated by a semicolon. The first will be used for zero and positive values, while the second will be used for negative values." We see this in currentyFormat in English, for instance, gives "pattern": "¤#,##0.00;(¤#,##0.00)", tells you the currency sign comes before and negatives are written in parentheses). –  Tim FitzGerald Feb 3 at 21:21

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.