Adaptor refactor
[platform/core/uifw/dali-adaptor.git] / dali / internal / system / common / locale-utils.cpp
1 /*
2  * Copyright (c) 2014 Samsung Electronics Co., Ltd.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16  */
17
18 // CLASS HEADER
19 #include <dali/internal/system/common/locale-utils.h>
20
21 namespace Dali
22 {
23
24 namespace Internal
25 {
26
27 namespace Adaptor
28 {
29
30 namespace Locale
31 {
32
33 namespace
34 {
35
36 struct LocaleDirectionInfo
37 {
38   const char * locale;
39   const char * name;
40   Locale::Direction direction;
41 };
42
43 const LocaleDirectionInfo LOCALE_DIRECTION_LOOKUP_TABLE[] =
44 {
45   { "af", "Afrikaans",          Locale::LeftToRight },
46   { "am", "Amharic",            Locale::LeftToRight },
47   { "ar", "Arabic",             Locale::RightToLeft },
48   { "as", "Assamese",           Locale::LeftToRight },
49   { "az", "Azerbaijani",        Locale::RightToLeft },
50   { "be", "Belarusian",         Locale::LeftToRight },
51   { "bg", "Bulgarian",          Locale::LeftToRight },
52   { "bn", "Bengali",            Locale::LeftToRight },
53   { "bo", "Tibetan",            Locale::LeftToRight },
54   { "bs", "Bosnian",            Locale::LeftToRight },
55   { "ca", "Catalan",            Locale::LeftToRight },
56   { "cs", "Czech",              Locale::LeftToRight },
57   { "cy", "Welsh",              Locale::LeftToRight },
58   { "da", "Danish",             Locale::LeftToRight },
59   { "de", "German",             Locale::LeftToRight },
60   { "dv", "Divehi",             Locale::RightToLeft },
61   { "el", "Greek",              Locale::LeftToRight },
62   { "en", "English",            Locale::LeftToRight },
63   { "es", "Spanish",            Locale::LeftToRight },
64   { "et", "Estonian",           Locale::LeftToRight },
65   { "eu", "Basque",             Locale::LeftToRight },
66   { "fa", "Farsi",              Locale::RightToLeft },
67   { "fi", "Finnish",            Locale::LeftToRight },
68   { "fo", "Faroese",            Locale::LeftToRight },
69   { "fr", "French",             Locale::LeftToRight },
70   { "gd", "Gaelic",             Locale::LeftToRight },
71   { "gl", "Galician",           Locale::LeftToRight },
72   { "gn", "Guarani",            Locale::LeftToRight },
73   { "gu", "Gujarati",           Locale::LeftToRight },
74   { "he", "Hebrew",             Locale::RightToLeft },
75   { "hi", "Hindi",              Locale::LeftToRight },
76   { "hr", "Croatian",           Locale::LeftToRight },
77   { "hu", "Hungarian",          Locale::LeftToRight },
78   { "hy", "Armenian",           Locale::LeftToRight },
79   { "id", "Indonesian",         Locale::LeftToRight },
80   { "is", "Icelandic",          Locale::LeftToRight },
81   { "it", "Italian",            Locale::LeftToRight },
82   { "ja", "Japanese",           Locale::LeftToRight },
83   { "ka", "Georgian",           Locale::LeftToRight },
84   { "kk", "Kazakh",             Locale::RightToLeft },
85   { "km", "Khmer",              Locale::LeftToRight },
86   { "kn", "Kannada",            Locale::LeftToRight },
87   { "ko", "Korean",             Locale::LeftToRight },
88   { "ks", "Kashmiri",           Locale::RightToLeft },
89   { "la", "Latin",              Locale::LeftToRight },
90   { "lo", "Lao",                Locale::LeftToRight },
91   { "lt", "Lithuanian",         Locale::LeftToRight },
92   { "lv", "Latvian",            Locale::LeftToRight },
93   { "mi", "Maori",              Locale::LeftToRight },
94   { "mk", "FYRO Macedonia",     Locale::LeftToRight },
95   { "ml", "Malayalam",          Locale::LeftToRight },
96   { "mn", "Mongolian",          Locale::LeftToRight },
97   { "mr", "Marathi",            Locale::LeftToRight },
98   { "ms", "Malay",              Locale::LeftToRight },
99   { "mt", "Maltese",            Locale::LeftToRight },
100   { "my", "Burmese",            Locale::LeftToRight },
101   { "nb", "Norwegian: Bokml",   Locale::LeftToRight },
102   { "ne", "Nepali",             Locale::LeftToRight },
103   { "nl", "Dutch",              Locale::LeftToRight },
104   { "nn", "Norwegian: Nynorsk", Locale::LeftToRight },
105   { "or", "Oriya",              Locale::LeftToRight },
106   { "pa", "Punjabi",            Locale::LeftToRight },
107   { "pl", "Polish",             Locale::LeftToRight },
108   { "pt", "Portuguese",         Locale::LeftToRight },
109   { "rm", "Raeto-Romance",      Locale::LeftToRight },
110   { "ro", "Romanian",           Locale::LeftToRight },
111   { "ru", "Russian",            Locale::LeftToRight },
112   { "sa", "Sanskrit",           Locale::LeftToRight },
113   { "sb", "Sorbian",            Locale::LeftToRight },
114   { "sd", "Sindhi",             Locale::LeftToRight },
115   { "si", "Sinhala",            Locale::LeftToRight },
116   { "sk", "Slovak",             Locale::LeftToRight },
117   { "sl", "Slovenian",          Locale::LeftToRight },
118   { "so", "Somali",             Locale::LeftToRight },
119   { "sq", "Albanian",           Locale::LeftToRight },
120   { "sr", "Serbian",            Locale::LeftToRight },
121   { "sv", "Swedish",            Locale::LeftToRight },
122   { "sw", "Swahili",            Locale::LeftToRight },
123   { "ta", "Tamil",              Locale::LeftToRight },
124   { "te", "Telugu",             Locale::LeftToRight },
125   { "tg", "Tajik",              Locale::RightToLeft },
126   { "th", "Thai",               Locale::LeftToRight },
127   { "tk", "Turkmen",            Locale::LeftToRight },
128   { "tn", "Setsuana",           Locale::LeftToRight },
129   { "tr", "Turkish",            Locale::LeftToRight },
130   { "ts", "Tsonga",             Locale::LeftToRight },
131   { "tt", "Tatar",              Locale::LeftToRight },
132   { "uk", "Ukrainian",          Locale::LeftToRight },
133   { "ur", "Urdu",               Locale::RightToLeft },
134   { "uz", "Uzbek",              Locale::LeftToRight },
135   { "vi", "Vietnamese",         Locale::LeftToRight },
136   { "xh", "Xhosa",              Locale::LeftToRight },
137   { "yi", "Yiddish",            Locale::RightToLeft },
138   { "zh", "Chinese",            Locale::LeftToRight },
139   { "zu", "Zulu",               Locale::LeftToRight },
140
141   { NULL, NULL, Locale::LeftToRight }
142 };
143
144 } // unnamed namespace
145
146 Locale::Direction GetDirection( const std::string& locale )
147 {
148   Locale::Direction direction( Locale::LeftToRight );
149
150   if ( !locale.empty() && locale.size() > 2 )
151   {
152     for ( const LocaleDirectionInfo* iter = &LOCALE_DIRECTION_LOOKUP_TABLE[0]; iter->locale; ++iter )
153     {
154       if ( !locale.compare( 0, 2, iter->locale ) )
155       {
156         direction = iter->direction;
157         break;
158       }
159     }
160   }
161
162   return direction;
163 }
164
165 } // namespace Locale
166
167 } // namespace Adaptor
168
169 } // namespace Internal
170
171 } // namespace Dali