[英]C++ Win32 API equivalent of CultureInfo.TwoLetterISOLanguageName
.NET框架可以輕松獲取有關各種語言環境的信息; Win32 C ++ API有點難以弄清楚。
在Win32中是否有等效函數來獲取給定整數區域設置ID的雙字母ISO語言名稱?
在C#我會這樣做:
System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo(1034);
string iso = ci.TwoLetterISOLanguageName;
// iso == "es" now.
代碼需要在XP和更新版本上運行。
感謝Trevor在早些時候的回復中指導我做出這個回答。
請參閱GetLocaleInfo函數。 您可能感興趣的有2個LCType值:LOCALE_SABBREVCTRYNAME和LOCALE_SABBREVLANGNAME。 我在Windows 7上進行了快速測試,兩者都返回了3個字符串,即使ISO 3166使用2個字符。 LOCALE_SABBREVLANGNAME文檔聲明它以2個字符的ISO 3166代碼開始,並為子語言添加第三個字符。
這是Win API自XP以來發展很多的一個領域。 我不認為你會找到一個功能,可以一直回到XP。 我相信.NET框架有自己的內置表(至少對於Vista之前的版本)。 GetUserDefaultLocaleName
甚至在XP上都不可用,並且這並不能完全滿足您的需求,即使它確實如此,它在XP上可能不會像在新版本上那樣完整。
您可能需要包含自己的表格。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.