|
本帖最后由 yyyxb 于 2024-6-20 16:47 编辑
由于有适应多语言文本的需要,所以在官方文档中找了几个 API,为了方便,又翻译或简化编写了几个函数:API:
函数:
_临时子程序 () 返回 (0 ) buf = 取空白字节集 (256 )LCIDToLocaleName (1033, buf, 取字节集长度 (buf ), 0 )返回 (buf )|
区域_LCID转语言代码_兼容 | 文本型 | | |
LCID | 整数型 | | | | 分隔符 | 文本型 | | | | 如果真 (是否为空 (分隔符 )) 分隔符 = “-”返回 (区域_取区域信息 (LCID, 89) + 分隔符 + 区域_取区域信息 (LCID, 90))返回 (LocaleNameToLCID (语言代码, 取字节集长度 (语言代码 )) )|
区域_取区域信息 | 文本型 | | |
LCID | 整数型 | | | | 信息类型 | 整数型 | | | |
buf = 取空白文本 (256 )GetLocaleInfoA (LCID, 信息类型, buf, 取文本长度 (buf )) 返回 (buf )|
区域_取区域信息W | 字节集 | | |
LCID | 整数型 | | | | 信息类型 | 整数型 | | | |
buf = 取空白字节集 (256 )GetLocaleInfoW (LCID, 信息类型, buf, 取字节集长度 (buf )) 返回 (buf )|
区域_取区域信息Ex | 字节集 | | |
LCID | 整数型 | | | | 信息类型 | 整数型 | | | |
buf = 取空白字节集 (256 )GetLocaleInfoEx (LCID, 信息类型, buf, 取字节集长度 (buf )) 返回 (buf )|
区域_置区域信息 | 整数型 | | |
LCID | 整数型 | | | | 信息类型 | 整数型 | | | | lpLCData | 文本型 | | | | 返回 (SetLocaleInfoA (LCID, 信息类型, lpLCData )) |
区域_置区域信息W | 整数型 | | |
LCID | 整数型 | | | | 信息类型 | 整数型 | | | | lpLCData | 字节集 | | | | 返回 (SetLocaleInfoW (LCID, 信息类型, lpLCData )) 返回 (GetSystemDefaultLCID ()) 返回 (GetUserDefaultLCID ()) buf = 取空白字节集 (256 )GetSystemDefaultLocaleName (buf, 取字节集长度 (buf )) 返回 (buf )buf = 取空白字节集 (256 )GetUserDefaultLocaleName (buf, 取字节集长度 (buf )) 返回 (buf )
实际用处:
易语言自带的“取系统语言 ()”虽然算是够用吧,一般也就是中文和英文。但是要想适应更多的语言,就不够用了。而这里的命令就是用于解决这个问题的。
网上搜索“LCID”和“语言代码”能了解相关知识。
用法:
例如,我想适用英语,用易语言的“取系统语言 ()”我能取到值“2”,但是如果我想适用俄语,该怎么办呢?
那么LCID和语言代码就登场了,LCID,其实是一种区域编号,例如英语(美国)为1033,中文(简体)为2052。用 GetSystemDefaultLCID () 获取系统的 LCID,GetUserDefaultLCID () 获取用户的 LCID。(这个方法适用于 Win2k 及以上版本)
而语言代码,也是一种标记法,如英语(美国)为“en-US”,中文(简体)为“zh-CN”。用 GetSystemDefaultLocaleName () 获取系统的 语言代码,GetUserDefaultLocaleName () 获取用户的 语言代码。(这个方法适用于 Vista 及以上版本)
如果你看 系统盘中 Windows\System32 文件夹中就有以 LCID 或 语言代码 命名的文件夹, 1033 算是旧式的, en-US 算是新式的 Windows Vista 开始出场的。至于“0804”,则是LCID的16进制表示法,其实为“0x0804”
LCID 和 语言代码 可以相互转化,但是将 语言代码 转为 LCID 我暂时只能实现用于 Windows Vista 及以上版本的。LCID 转 语言代码倒是可以兼容。
以下的链接可以查阅并学习:
winnls.h 标题 - Microsoft Learn (以上提供的 API 就是出自这里):https://learn.microsoft.com/zh-cn/windows/win32/api/winnls/
还有 GetLocaleInfo 系列函数,我在查的时候发现论坛已经有教程了。关于如何使用可以看:api 一日一练(132) 硬件与系统类-取本系统所在国家GetLocaleInfo函数 https://bbs.125.la/forum.php?mod=viewthread&tid=128599 (出处: 精易论坛)
以及涉及到的常量,也可以在 区域设置信息常量 - Microsoft Learn ( https://learn.microsoft.com/zh-cn/windows/win32/intl/locale-information-constants )中查。
现在有弄个模块的想法,但是个人能力实在有限,就不弄了 |
|