簡體   English   中英

C ++ Win32 API等效於CultureInfo.TwoLetterISOLanguageName

[英]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在早些時候的回復中指導我做出這個回答。

使用LOCALE_SISO639LANGNAME參數調用GetLocaleInfo

請參閱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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM