gpt4 book ai didi

android - 如何使货币(保持本地化)独立于 Android 应用程序的系统区域设置?

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

我一直在研究这个问题的解决方案,但找不到合适的解决方案。我得到的最接近的是 this来自 stackoverflow 的条目。但由于这是 4 年前提出的(虽然它可以帮助解决我的问题,但实际上不是我的问题),我会再次询问,看看现在是否有更好的解决方法。

上下文:我想在几个国家发布我的 android 应用程序。目前仅在西类牙有售。我已经阅读了所有关于本地化的 android 开发人员文档。很明显,代码上的所有动态本地化信息在呈现给用户时都应基于“系统区域设置”。

问题:当用户手动更改设置上的语言并且我想显示一个价格(由应用程序生成)时,问题就出现了,该价格基于系统区域设置偏好的货币。例如,假设我住在西类牙,我将设备语言和输入/语言设置为英语(美国)。当我这样做时,我的应用程序以美元 ($) 显示价格,但我希望它继续显示欧元 (€),因为我在西类牙。我如何实现这一目标?

这是根据系统区域设置向用户显示“本地化”价格的实际代码:

    Locale currentLocale = Locale.getDefault();
priceFormat = NumberFormat.getInstance(currentLocale);
localCurrency = Currency.getInstance(current);
//...

//doubleValueCost is independent from currency but the I want to add the proper currency symbol
costTextView.setText(priceFormat.format(doubleValueCost) + " " + localCurrency.getSymbol());

此代码将为用户在首选项中选择的系统区域设置添加货币符号,而不是设备所在国家/地区的实际货币符号。

欢迎任何建议。提前致谢。

最佳答案

经过所有研究后,我决定使用 TelephonyManager simCountryIso 在我在问题中提到的具体场景中对货币进行本地化。不确定这是否是解决我的问题的最佳解决方案,但这是我找到的最佳选择。这将是获取我需要的货币的代码:

        String countryIso = telephonyManager.getSimCountryIso();
localCurrency = Currency.getInstance(new Locale(countryIso,countryIso));
//doubleValueCost is independent from currency but the I want to add the proper currency symbol ...
costTextView.setText(priceFormat.format(doubleValueCost) + " " + localCurrency.getSymbol());

如果有人提出更好的解决方案,我会很高兴听到。谢谢

关于android - 如何使货币(保持本地化)独立于 Android 应用程序的系统区域设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25771459/

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