Boost.Locale
locale_data.hpp
1//
2// Copyright (c) 2009-2011 Artyom Beilis (Tonkikh)
3// Copyright (c) 2023-2024 Alexander Grund
4//
5// Distributed under the Boost Software License, Version 1.0.
6// https://www.boost.org/LICENSE_1_0.txt
7
8#ifndef BOOST_LOCALE_UTIL_LOCALE_DATA_HPP
9#define BOOST_LOCALE_UTIL_LOCALE_DATA_HPP
10
11#include <boost/locale/config.hpp>
12#include <string>
13
14#ifdef BOOST_MSVC
15# pragma warning(push)
16# pragma warning(disable : 4251)
17#endif
18
19namespace boost { namespace locale { namespace util {
20
22 class BOOST_LOCALE_DECL locale_data {
23 std::string language_;
24 std::string script_;
25 std::string country_;
26 std::string encoding_;
27 std::string variant_;
28 bool utf8_;
29
30 public:
36 explicit locale_data(const std::string& locale_name);
37
39 const std::string& language() const { return language_; }
41 const std::string& script() const { return script_; }
43 const std::string& country() const { return country_; }
45 const std::string& encoding() const { return encoding_; }
48 locale_data& encoding(std::string new_encoding, bool uppercase = true);
50 const std::string& variant() const { return variant_; }
52 bool is_utf8() const { return utf8_; }
53
63 bool parse(const std::string& locale_name);
64
67 std::string to_string() const;
68
69 private:
70 void reset();
71 bool parse_from_lang(const std::string& input);
72 bool parse_from_script(const std::string& input);
73 bool parse_from_country(const std::string& input);
74 bool parse_from_encoding(const std::string& input);
75 bool parse_from_variant(const std::string& input);
76 };
77
78}}} // namespace boost::locale::util
79
80#ifdef BOOST_MSVC
81# pragma warning(pop)
82#endif
83#endif
Holder and parser for locale names/identifiers.
Definition locale_data.hpp:22
const std::string & encoding() const
Return encoding/codeset, e.g. ISO8859-1 or UTF-8.
Definition locale_data.hpp:45
std::string to_string() const
bool parse(const std::string &locale_name)
locale_data()
Default to C locale with US-ASCII encoding.
locale_data(const std::string &locale_name)
bool is_utf8() const
Return iff the encoding is UTF-8.
Definition locale_data.hpp:52
const std::string & language() const
Return language (usually 2 lowercase letters, i.e. ISO-639 or 'C')
Definition locale_data.hpp:39
const std::string & country() const
Return country (usually 2 uppercase letters, i.e. ISO-3166)
Definition locale_data.hpp:43
locale_data & encoding(std::string new_encoding, bool uppercase=true)
const std::string & script() const
Return the ISO-15924 abbreviation script code if present.
Definition locale_data.hpp:41
const std::string & variant() const
Return variant/modifier, e.g. euro or stroke.
Definition locale_data.hpp:50