#include <iostream>
#include <locale>
class german_bool_names : public std::numpunct_byname<char> {
public:
german_bool_names (const char *name)
: std::numpunct_byname<char>(name)
{}
protected:
virtual std::string do_truename() const {
return "wahr";
}
virtual std::string do_falsename() const {
return "falsch";
}
};
class portuguese_bool_names : public std::numpunct_byname
<char> {
public:
portuguese_bool_names (const char *name)
: std::numpunct_byname<char>(name)
{}
protected:
virtual std::string do_truename() const {
return "verdadeiro";
}
virtual std::string do_falsename() const {
return "falso";
}
};
int main()
{
using namespace std;
locale loc("");
locale bra(locale("Portuguese_Brazil"),
new portuguese_bool_names(""));
locale ger(locale("German_Germany"),
new german_bool_names(""));
cout << use_facet<numpunct<char
> >(bra).truename() << endl;
cout << use_facet<numpunct<char
> >(ger).truename() << endl;
cout << use_facet<numpunct<char
> >(loc).truename() << endl;
cout.imbue(bra);
cout << boolalpha << true << " "
<< false << endl;
cout.imbue(ger);
cout << boolalpha << true << " "
<< false << endl;
cout.imbue(loc);
cout << boolalpha << true << " "
<< false << endl;
return 0;
}