使用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);
无论如何,显式用户选项可能会有用。如果你是纽约的英国人,尽管有公司的标准语言环境,但你可能更喜欢颜色。 –