22

Is there a suggested, single location to place the currency symbol every time for any given locale?

For example, always on the left with a space before the amount like this:

R 10.00
$ 10.00
€ 10.00
¥ 10.00

Is this acceptable even in instances when the currency symbol is usually placed to the right of the amount, or should you keep track of the placement per locale?

Also, what is the best way to handle currencies with odd unicode characters when you plan on targeting devices that don't support the displaying of these characters? Do you default to using the three letter international code? If you do then do you still obey left-or-right placement or can you place all on the left?

1
  • 5
    +1 very good question. Sometimes currency symbols are not the best choice but ISO currency codes are. Think of US $ vs. Canada $, or even a foreign exchange case between the two :-) Jun 18, 2012 at 17:21

5 Answers 5

27

If you're going to bother localizing your interface, you might as well do it fully and respect the language or region's common practices.

As you mention localization, I assume this means that you will change the placement of the currency symbol based on the locale setting of the user's interface, rather than the locale of the currency symbol used.

Take French1, example:

  1. French places the currency symbol after the amount (to maintain uniformity with the rest of the metric measures, 2 $ as 2 km).
  2. Similarly, French uses , as a decimal and space as a thousands separator (1 000,59 $)

So, if you're localizing the interface for a French user, you would display 100 ¥; 10,00 R; 10,00 €.

Programatically, this is not difficult to achieve; see Stack Overflow's Localization tag and Programming's Localization tag and numerous resources for your development language of choice already on the internet.

{1} Source: I'm French-Canadian and my example localizes for fr_CA.

5
  • 5
    I don't know about French Canadians, but the European French will in some circumstances insert the unit in place of the decimal separator, eg. 2€50. It is true that 2,50€ will also be understood, but the former is more prevalent in my experience. This was also true when the currency was the franc (F).
    – user8697
    Jun 20, 2012 at 17:49
  • 2
    @Phong +1 Great observation! fr_CA does not do that, but it's a great example of a pitfall of looking only to a language when localizing (as you also have to adapt to the environment in which the language is used).
    – msanford
    Jun 20, 2012 at 19:07
  • 3
    @msanford Just as a side note: For Yen (JPY; ¥) there are no fractions/decimals of a ¥ Nov 30, 2012 at 16:39
  • @greenforest I didn't realize that! Thanks for the information.
    – msanford
    Dec 3, 2012 at 2:06
  • 1
    @msanford what about en_FR?? A French user, who understands English, but he is used to see the currency format as 10,00 ¥ Jan 17, 2017 at 7:14
7

There is little point in localizing just a part of a currency presentation and using non-localized or wrongly localization notations otherwise. It may confuse, and it gives the impression of half-hearted localization efforts. The CLDR database contains information about the placement of currency denotations, too. They would not have included it if they thought such things can be left unlocalized.

If you can successfully localize some user interface or some presentation of some data, the odds are that currency symbols used in a locale are available. This has changed to some extent in recent years, since symbols like the new character for Turkish lira and the Indian rupee symbol are new and generally not supported in fonts, and they may cause other problems as well.

So it may be better, in some cases at least, use currency abbreviations or names, especially since symbols like “$”, “£”, and “¥” do not unambiguously indicate a single currency. The CLDR data contains localized abbreviations and names for currencies.

The three-letter codes are meant for international banking business and for data interchange between computers, not for normal human consumption. In a user interface for common people, they should not be used, except perhaps as the last resort when everything else fails. But there’s not much reason why things should fail. If used, these codes follow the normal language-dependent placement rules (e.g., 10,00 EUR in French).

1
  • Where can I read the contents of that CLDR database? I'd like to look up some data from it but it doesn't seem to be accessible.
    – ygoe
    Jan 29, 2016 at 21:03
4

From a finance perspective, here's a rough approximation of what we might do:
enter image description here

And here's a link to information on currency codes

0

This isn't what I would call a best practice, just what I've learned from my experiences and what I've seen.

You're right by putting them all to the left, there needs to be uniformity. It looks odd looking at a list where some symbols are to the right and others are to the left. Think of an unordered list with check marks used to define the different lis. Some going to the left, and some going to the right. That wouldn't look to good.

Also, yes you should use the three letter international code for them. It is your safest bet for when considering how your users will be presented with the information to insure they are fully aware of where their local currency is being listed. Sites like Amazon do this too.

1
  • I do not believe this is correct. You should respect the custom where the view is being observed. If the US places symbols on the left, then it should be on the left when viewed in the US, if its on right in Italy, then it should be on the right when viewed in italy and on the left when viewed in the US. If the currency symbol is native, it should be used (unless otherwise required) otherwise the code should be used in its place to remove ambiguity (e.g. $ in Mexico is pesos, so USD should be used when referring to US dollars) Apr 8, 2016 at 4:12
0

It's slightly more complicated: The currency symbol identifies a currency, which has an exchange rate, and has nothing to do with localisation. If someone owes me 100 Canadian dollars then this doesn't change because I move to France and they are using Euros, I'm still owed 100 Canadian dollars. (I knew about a case where an old Microsoft Excel version used "Currency" as a number format and displayed the numbers with the native currency of the locale, with obviously disastrous consequences if a British company sends an estimate with UK£ to a company in the USA who sees the numbers displayed as US$).

To do this correct, you need code (or tables, or an operating system function) that displays the currency correct in the locale of the user. For example, there are quite a few currencies named "dollar" with different currency symbol. In the US locale, the US dollar is plain "$" and everything else like Australian dollar is displayed with the name of country. In Australia, Australian dollars are plain "$" and everything else, including US dollar, is displayed with the country name.

Different locales usually use different thousands separators and decimal separators. Some currencies are not displayed with decimals, like Japanese Yen. Indians display Indian rupees in an interesting way (100,000 rupees = 1 Lakh; I think Indians would write 1'00'000 but I maybe wrong) - I don't think they use that method for other currencies, and other locales don't display rupees that way because the readers would just be confused.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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