ruby - 使用 Ruby 在 Windows 中读取区域位置设置(国家代码)?

标签 ruby windows internationalization regional-settings

我正在尝试使用 Ruby 访问控制面板:区域和语言:位置:当前位置设置。我只对国家代码感兴趣。

我得到的最接近的是来自系统区域设置的国家/地区代码,但这并不是我想要的。

`systeminfo | findstr /B /C:"System Locale"`.to_s.upcase.strip[30..31]

我希望有人知道。谢谢。

最佳答案

使用 Win32 API:

require 'Win32API'

# Set up some Win32 constants
GEOCLASS_NATION  = 16
GEO_ISO2         = 4
GEO_FRIENDLYNAME = 8

# Set up some API calls
GetUserGeoID = Win32API.new('kernel32', 'GetUserGeoID', ['L'], 'L')
GetGeoInfo   = Win32API.new('kernel32', 'GetGeoInfoA', ['L', 'L', 'P', 'L', 'L'], 'L')

# Get user's GEOID
geoid = GetUserGeoID.call(GEOCLASS_NATION)
=> 77

# Get ISO name
buffer = " " * 100
GetGeoInfo.call(geoid, GEO_ISO2, buffer, buffer.length, 0)
geo_iso = buffer.strip
=> "FI"

# Get friendly name
buffer = " " * 100
GetGeoInfo.call(geoid, GEO_FRIENDLYNAME, buffer, buffer.length, 0)
geo_name = buffer.strip
=> "Finland"

GetUserGeoID 的文档:
http://msdn.microsoft.com/en-us/library/dd318138.aspx

GetGeoInfo 的文档:
https://learn.microsoft.com/en-us/windows/desktop/api/winnls/nf-winnls-getgeoinfoa

要将 GEOID 转换为位置名称,您还可以使用此表:
http://msdn.microsoft.com/en-us/library/dd374073.aspx

关于ruby - 使用 Ruby 在 Windows 中读取区域位置设置(国家代码)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10621985/

相关文章:

ruby-on-rails - RSpec 找不到嵌套资源的路由

ruby-on-rails - 设计数据库迁移 - Ruby on Rails

windows - 戈朗 : run default application for a pdf file on windows

php - 将xml数据写入oracle数据库

ios - 为什么 Apple 使用不同的文件夹结构来进行 bundle 和字符串本地化?

ruby - 在 ruby​​ 中获取 attr_accessor/实例变量

ruby - 在 Rails 应用程序中导入 CSV 时忽略具有空白值的行

windows - 如何使用 NSSM

windows - 使用批处理命令检查文件夹是否为空?

html 上传 : localize browse button