yfinance 如何设置 locale 让 Ticker.info 返回本地语言的公司名称
2026/9/13 19:24:38 网站建设 项目流程

yfinance 如何设置 locale 让 Ticker.info 返回本地语言的公司名称

【免费下载链接】yfinanceDownload market data from Yahoo! Finance's API项目地址: https://gitcode.com/GitHub_Trending/yf/yfinance

用 yfinance 拉取股票资料时,Ticker.info默认返回的是英文公司名称(例如小米是"Xiaomi Corporation")。如果你希望longNameshortName等字段跟随 Yahoo 的本地语言返回,需要通过 yfinance 的全局配置yf.config.locale来指定语言与地区。本文介绍如何设置这个 locale、如何验证生效,以及哪些情况 Yahoo 不会返回翻译结果。

前提:locale 的默认值

yfinance 的yf.config.locale有两个字段(定义见 config.py):

  • lang:BCP-47 语言标签,用于 Yahoo v7/v10 端点,默认"en-US"
  • region:ISO 3166-1 alpha-2 国家码,默认"US"

默认 locale(en-US/US)下,1810.HKlongName返回"Xiaomi Corporation",这一点在仓库测试 test_ticker_locale.py 中有对应断言。

设置 locale:在会话开始时设置一次

根据 advanced/config.rst 的说明,localized 字段(longNameshortName等)跟随yf.config.locale。做法是在会话开始时切换一次,之后所有走 v7 / v10 端点的调用(Ticker.infoTicker.fast_infoTicker.calendarearnings_dates等)都会继承该 locale。

以繁体中文(港)为例,文档给出的写法是:

import yfinance as yf yf.config.locale.lang = "zh-Hant-HK" yf.config.locale.region = "HK" name = yf.Ticker("1810.HK").info["longName"]

以日语(日本)为例:

import yfinance as yf yf.config.locale.lang = "ja-JP" yf.config.locale.region = "JP" name = yf.Ticker("7203.T").info["longName"]

两个代码块都是完整可运行的最小示例,只需要按目标语言替换lang/region的取值即可。

验证结果

文档给出的示例输出如下(文档示例,实际以 Yahoo 当前返回为准):

  • zh-Hant-HK/HK下,yf.Ticker("1810.HK").info["longName"]返回'小米集團-W'
  • ja-JP/JP下,yf.Ticker("7203.T").info["longName"]返回'トヨタ自動車'

即:设置 locale 后重新读取.info["longName"],得到的是本地语言的公司名,而不是默认英文,就说明设置已生效。仓库测试 test_ticker_locale.py 还包含一个ru-RU/RU的用例:对GAZP.ME断言longName包含"Газпром"(若 Yahoo 未返回该字段则跳过测试),可作为俄语方向的参考。

locale 是通过请求参数传给 Yahoo 的。在 base.py 与 quote.py 中可以看到,相关请求的 params 都是{"lang": YfConfig.locale.lang, "region": YfConfig.locale.region},因此只要设置一次,后续请求即携带新的语言与地区。

限制:只有本地上市股票才有翻译

文档明确说明:Yahoo 只对在该 locale 本地上市的股票返回翻译值。即使把 locale 设为ja-JPTicker("AAPL")仍会返回"Apple Inc.",因为 Apple 的美国上市名称没有日语翻译(该行为在 test_ticker_locale.py 的test_locale_us_listing_not_translated用例中被断言)。

所以验证时如果名称仍是英文,先确认该股票是否在所选 locale 对应的市场本地上市,而不是 locale 设置本身出错。

小结

  • 在会话开始时设置一次yf.config.locale.langyf.config.locale.region,即可让Ticker.info等 v7/v10 端点调用返回本地语言的longNameshortName等字段;
  • 用目标市场本地上市的股票(如1810.HK7203.T)读取.info["longName"]来验证是否生效;
  • 本地未上市的股票(如美股代码在非美 locale 下)不会返回翻译值,此时保持原名是预期行为。

locale 属于进程内的全局配置,只在当前会话生效;换新会话时需要重新设置。更多全局配置项(networkdebug等)见 advanced/config.rst。

【免费下载链接】yfinanceDownload market data from Yahoo! Finance's API项目地址: https://gitcode.com/GitHub_Trending/yf/yfinance

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询