Language.h revision 73de5837
1/*
2 * Copyright 2003-2011, Haiku, Inc.
3 * Distributed under the terms of the MIT License.
4 */
5#ifndef _LANGUAGE_H_
6#define _LANGUAGE_H_
7
8
9#include <LocaleStrings.h>
10#include <String.h>
11#include <SupportDefs.h>
12
13
14class BBitmap;
15
16// We must not include the icu headers in there as it could mess up binary
17// compatibility.
18#ifndef U_ICU_NAMESPACE
19  #define U_ICU_NAMESPACE icu
20#endif
21namespace U_ICU_NAMESPACE {
22	class Locale;
23}
24
25
26enum script_direction {
27	B_LEFT_TO_RIGHT = 0,
28	B_RIGHT_TO_LEFT,
29	B_TOP_TO_BOTTOM,	// seems not to be supported anywhere else?
30};
31
32
33class BLanguage {
34public:
35								BLanguage();
36								BLanguage(const char* language);
37								BLanguage(const BLanguage& other);
38								~BLanguage();
39
40			status_t			SetTo(const char* language);
41
42			status_t			GetNativeName(BString& name) const;
43			status_t			GetName(BString& name,
44									const BLanguage* displayLanguage = NULL
45									) const;
46			const char*			GetString(uint32 id) const;
47			status_t			GetIcon(BBitmap* result) const;
48
49			const char*			Code() const;
50									// ISO-639-1
51			const char*			CountryCode() const;
52									// ISO-3166
53			const char*			ScriptCode() const;
54									// ISO-15924
55			const char*			Variant() const;
56			const char*			ID() const;
57
58			bool				IsCountrySpecific() const;
59			bool				IsVariant() const;
60
61			uint8				Direction() const;
62
63			BLanguage&			operator=(const BLanguage& source);
64
65			class Private;
66private:
67	friend	class Private;
68
69			uint8				fDirection;
70			U_ICU_NAMESPACE::Locale*		fICULocale;
71};
72
73
74#endif	// _LANGUAGE_H_
75