下面列出的场景的最佳实践是什么?
我们有一个应用程序希望支持多种货币。 该软件将尊重用户的区域设置和区域设置来规定正确的数字格式,即 $10,000.00 或 10.000,00₴ 等。
但是,我们希望能够根据货币 ID(可能是三个字母的 ISO4217 代码)格式化不同的数字。 我们的想法是在数据库中存储每种货币的表格,然后请求用户选择将使用的货币符号。 然后,程序将根据区域设置/区域设置格式化所有数字,但将使用我们程序中定义的货币符号。
因此,给定以下值和货币
10000 澳元
5989.34 美元
450 欧元
程序将输出
$10,000.00
$5,989.34
€450.00
或在区域设置中将数字格式设置为 #####,##$,结果将是;
10000,00$
5989,34$
450,00€
尊重区域设置/区域数字格式但显示不同的货币,最佳实践是什么?
我希望这是有道理的。
使用的技术是c# .NET 2.0。
What is best practice for the scenario listed below?
We have an application which we would like to support multiple currencies. The software will respect the users locale and regional settings to dictate the correct number format, i.e. $10,000.00 or 10.000,00₴ etc.
We would however like to be able to format different numbers based upon a currency ID (perhaps the three letter ISO4217 code). Our idea is to store a table in the database with each currency and then request from the user to select the currency symbol which will be used. The program will then format all numbers based upon the locale/region setting but will use the currency symbol as defined in our program.
So, given the following values and currencies
10000 AUD
5989.34 USD
450 EUR
the program would output
$10,000.00
$5,989.34
€450.00
or with a regional setting that formated numbers as #####,##$ the result would be;
10000,00$
5989,34$
450,00€
Respecting locale/region number formatting but displaying different currencies, what is best practice for this?
I hope this makes sense.
Technology used is c# .NET 2.0.
发布评论
评论(5)
听起来您已经掌握了格式化数据的最佳实践。 如果我是您,我会更少担心技术上的标准,而是更多地关注您的用户习惯的内容。
如果您所在的市场用户对不同货币相当了解,那么这与拥有更多单一文化用户是完全不同的事情。 根据情况,您需要以不同的方式设计界面。
此外,如果您的要求是向任何语言环境显示任何货币,则 ISO4217 标准是您最好的选择。 它是在世界各地的货币兑换商店、货币兑换、发票等上显示的内容。否则,显示货币符号可能会让某些用户感到相当困惑,并且该符号本身并不表示实际金额是什么货币。
我还会参考以下问题。 并非所有这些都与您的问题直接相关,但它们对支持多种货币所涉及的问题有很好的元讨论。
It sounds like you have a handle on the best practices for formatting data. If I were you I would worry less about what is technically the standard but focus more on what it is your users are accustomed to.
If you are operating in markets where users are fairly savvy about different currencies it is a very different thing than having more monocultural users. Depending on the case, you will need to design your interface in a different way.
Moreover, if your requirement is to display any currency to any locale, the ISO4217 standard is your best bet. It is what is shown at currency exchange shops across the world, on currency exchanges, invoices, etc. Otherwise, displaying currency symbols could be rather confusing to some users and the symbol by itself does not indicate what currency the amount actually is.
I would also reference the following SO questions. Not all of them directly relate to your problem, but they have very good meta discussions about the issues involved in supporting multiple currencies.
您可以存储每个货币代码的区域性字符串,而不是仅存储货币符号,因此 AUD --> en-AU
我不确定可用的格式有多少灵活性。
不确定这是否有帮助:
格式化特定区域性的数字数据
Rather than storing just the currency symbol, you could store the culture string for each currency code, so AUD --> en-AU
I'm not sure how much flexibility there is in formatting available.
Not sure if this helps:
Formatting Numeric Data for a Specific Culture
您可以将货币值存储为小数,然后在 UI 上附加货币符号。
Fowler 在企业应用程序架构模式中讨论了货币模式:http://www.martinfowler.com/eaaCatalog/money.html
You could store the money value as a decimal, then append the currency symbol on the UI.
Fowler discusses the Money pattern in Patterns of Enterprise Application Architecture here: http://www.martinfowler.com/eaaCatalog/money.html
我也遇到过类似的情况。 我找到了一个方法,不知道对你有多大用处。 但它解决了我的问题。 我为每个地方设置一个会话字符串,例如每次登录身份验证的 Session["cur"]="0.000" 或 "0.00" 。 无论货币出现在系统中,我都使用 .ToString[Session["cur"].ToString()] 作为模型变量。 它对我有用。 希望它也对您有帮助。
I faced a similar situation. I found a way, dont know how useful it will be for you. But it solved my problems. I set a session string for each place like Session["cur"]="0.000" or "0.00" for each login authentication. And where ever currency comes in the system I used .ToString[Session["cur"].ToString()] to the model variables. It did the trick for me . Hope it helps you too .
我认为这个问题是关于你应该做什么的一个很好而清晰的答案
SO - 不显示文化的本机货币时的正确货币格式
这个问题很好地回答了如何在 C# 中执行此操作
SO - 货币格式
I think this Q is an excellent and clear answer as to WHAT you should be doing
SO - Proper currency format when not displaying the native currency of a culture
And this Q has a good answer of HOW to do this in C#
SO - Currency formatting