Locale atamak
C++ programlarında global bir locale bulunur. Bu locale ilk açılışta std::locale::classic() olarak atanmıştır.
Global locale nesnesini değiştirmek için şu yöntemlerden biri kullanılabilir
1. "If a programmer wants to honor local conventions it should use corresponding locale objects. The static member function global of the class locale can be used to install a global locale object."
2. setlocale metodu kullanılır. std::setlocale yazısına taşıdım.
Locale İsimleri
Eğer belli bir ülkenin locale'i kullanılmak istenirse "" yerine locale ismini kullanmak gerekir.Ancak kullanılan string ismi platforma göre değişkenlik gösterir. Linux üzerinde seçili locale isimini görmek için "locale" komutu kullanılabilir.
Java gibi dillerde locale isimleri standartlaşmıştır. Locale.getISOLanguages() ve Locale.getISOCountries() metodları kullanılabilir. Java'da şöyle yaparız:
C++ programlarında global bir locale bulunur. Bu locale ilk açılışta std::locale::classic() olarak atanmıştır.
Global locale nesnesini değiştirmek için şu yöntemlerden biri kullanılabilir
1. "If a programmer wants to honor local conventions it should use corresponding locale objects. The static member function global of the class locale can be used to install a global locale object."
std::locale::global(std::locale(""));
Programın C locale'i başladığını ancak daha sonra değişitirildiğini gösteren küçük bir örnekint main(void)
{
std::cout << std::locale().name() << std::endl;//C locale ile başlar
std::locale::global(std::locale(""));//Kullanıcının locale'ini atar
std::cout << std::locale().name() << std::endl;
std::locale::global(std::locale("C"));//C locale'ini atar
std::cout << std::locale().name() << std::endl;
return 0;
}
Çıktı olarak şunu verirC
French_Canada.1252
C
2. setlocale metodu kullanılır. std::setlocale yazısına taşıdım.
Locale İsimleri
Eğer belli bir ülkenin locale'i kullanılmak istenirse "" yerine locale ismini kullanmak gerekir.Ancak kullanılan string ismi platforma göre değişkenlik gösterir. Linux üzerinde seçili locale isimini görmek için "locale" komutu kullanılabilir.
Java gibi dillerde locale isimleri standartlaşmıştır. Locale.getISOLanguages() ve Locale.getISOCountries() metodları kullanılabilir. Java'da şöyle yaparız:
public final class IsoUtil {
private static final Set<String> ISO_LANGUAGES = new HashSet<String>
(Arrays.asList(Locale.getISOLanguages()));
private static final Set<String> ISO_COUNTRIES = new HashSet<String>
(Arrays.asList(Locale.getISOCountries()));
private IsoUtil() {}
public static boolean isValidISOLanguage(String s) {
return ISO_LANGUAGES.contains(s);
}
public static boolean isValidISOCountry(String s) {
return ISO_COUNTRIES.contains(s);
}
}