如何在不使用语言环境模块的情况下获取国际货币符号?

Posted

技术标签:

【中文标题】如何在不使用语言环境模块的情况下获取国际货币符号?【英文标题】:How get the international currency symbol without using locale module? 【发布时间】:2019-03-25 18:21:08 【问题描述】:

我需要获取iso货币符号,而不使用内置的python语言环境模块。

locale 模块需要是安装在操作系统上的语言环境。我想在无服务器环境中运行我的代码,因此安装任何操作系统附加包都是一个障碍。

我需要的就相当于:

import locale
locale.setlocale(locale.LC_ALL, ('en_US', 'utf-8'))
currency_symbol = locale.localeconv()['int_curr_symbol']

【问题讨论】:

为什么要限制? 您认为还涉及哪些附加包? 我需要获取货币代码,而无需在操作系统中安装任何其他软件包。例如,如果我尝试设置未安装的语言环境,则会引发错误:locale.Error: unsupported locale setting。我需要使用一些不依赖于操作系统的库来获取货币符号。 假设您的服务器上有互联网,您可以通过 ping 一个网站来查找您的地理坐标。例如:***.com/a/24907340/8150685(尽管您必须找到其他网站)。或者,如果您可以安装软件包,您可以使用下面的答案:***.com/a/43589918/8150685。然后使用这些坐标找到正确的货币符号。 您可以使用查找表或通过其他 API 调用(例如:usercountry.com)找到正确的货币符号。 (此 API 可以只使用您的 IP 来返回所需的数据)。 【参考方案1】:

我使用Babel 库解决了这个问题:

from babel import Locale
from babel.numbers import get_territory_currencies
from datetime import datetime


current_locale = Locale.parse('en_US')
current_date = datetime.utcnow().date
currency_symbol = get_territory_currencies(
    current_locale.territory,
    current_date,
    current_date)[0]

此解决方案的一个限制是语言环境代码应具有地域。

【讨论】:

以上是关于如何在不使用语言环境模块的情况下获取国际货币符号?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不使用语言环境的情况下格式化 NumberTextBox?

Magento 2 如何根据语言环境自定义货币符号和格式

国际化之货币符号显示

如何在不使用@符号连接到DB的情况下连接到DB。调用sqlplus UNAME @ DBNAME /密码@ \ Filelocation

用户当前语言环境的货币符号

如何在不扩展令牌的情况下获取 PATH 环境变量的值?