使用C++有一種簡單而可靠的方法來檢測美式英語或英式英語拼寫是否與用戶的語言環境更好地匹配?我有一個簡單的桌面C++程序,我想執行這個第一個最小的國際化步驟。我的用戶界面使用了很多顏色/顏色這個詞,我希望在沒有大量火箭科學或明確的用戶選項的情況下,在99%以上的情況下向用戶展示正確的拼寫。使用C++檢測美式英語或英式英語拼寫是否適用於C++
編輯:下面接受的答案是好的。爲了提供一些額外的信息和完整的可用解決方案,這裏可能是確定在C++應用程序中使用美國還是英國英語的最簡單可能的方法。這是實現適當國際化的一個小而有用的步驟。對於那些希望在美國以外對講英語的人以及希望他們的產品在美國有更多家庭的英語開發人員(我在後者陣營中),這對美國開發人員非常有用。
這不是一個完美的解決方案,但顯然標準化過程未能提供完美而簡單的解決方案。我認爲,至少使用這段代碼會使顏色與顏色錯誤,而不是簡單地任意選擇其中一種,而是假設您的產品被廣泛使用,這對於一小部分用戶來說是錯誤的。
#include <string>
#include <clocale>
setlocale(LC_MONETARY,"");
struct lconv * lc;
lc = localeconv();
std::string sym(lc->int_curr_symbol);
bool us_english = (sym=="USD" || sym=="PHP");
我基本上假設美國英語是在美國和英國英語偏好的其他地方,雖然我破例爲一個國家,我知道不是這樣的情況(菲律賓)。
在我的Windows系統上,該程序立即反映默認語言的變化,由Windows設置或控制面板控制。這樣做可以避免解析任何可能因操作系統不同而不同的字符串,我期望它是可移植的。
我不打算使用我自己的解決方案,因爲在我的特殊情況下,我使用的是wxWidgets,並且恰巧wxWidgets爲這個問題提供了一個可移植的包裝器裁縫(我應該考慮過之前檢查過)。
#include "wx/intl.h"
int lang = wxLocale::GetSystemLanguage();
bool us_english = (lang == wxLANGUAGE_ENGLISH_US);
無論如何,顯式用戶選項可能會有用。如果你是紐約的英國人,儘管有公司的標準語言環境,但你可能更喜歡顏色。 –