gpt4 book ai didi

java - 显示依赖于区域设置的货币符号的最佳方式是什么?

转载 作者:搜寻专家 更新时间:2023-11-01 03:27:34 30 4
gpt4 key购买 nike

我想根据当前浏览器区域设置显示货币符号 ($, €)。这样做的最佳方法是什么?

我试过:

locale = FacesContext.getCurrentInstance().getViewRoot().getLocale();
System.out.println(locale); //gives: "en"
Currency.getInstance(locale).getSymbol(); //java.lang.IllegalArgumentException
Currency.getInstance(locale.GERMANY).getSymbol(); //gives €

如何根据区域设置相关的浏览器设置(此处为“en”)获取符号?

更新

locale.getLanguage() > "de"
locale.getDefault() > "de_DE"

然而,Currency.getInstance(locale).getSymbol(); 失败了。

最佳答案

货币取决于区域设置的国家/地区部分。由于 en 不包含国家/地区部分,因此它是创建 Currency 实例的非法参数。

换句话说:您希望区域设置为 $US$AU$ 还是 £?恩”?或者是其他东西? “英语”没有货币。有适用于美国、英国、澳大利亚等的货币,但没有适用于英语的货币。

编辑
如果用户正确配置了他的浏览器,那么您将获得一个包含国家和语言部分(例如 en-US)的区域设置。这些语言环境你可以使用你在你的问题中所做的方式。

但是您应该考虑使用基于 IP 地址的地理定位。存在像 GEO-IP 这样的数据库和 MaxMind .请注意其中存在差异 - 一名在德国留学的美国学生正在用他的笔记本电脑上网。他的浏览器可能会返回 en-US,但 GEO-IP 数据库很可能会以 Germany 为目标。但这也许正是您想要的?!

最后,您可以使用其中一种方法作为主要定位因素,将第二种方法作为备用方法。当两者都失败时,然后切换到默认值(例如美元)

关于java - 显示依赖于区域设置的货币符号的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9445277/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com