[3.0] Fix build error
[platform/core/uifw/dali-adaptor.git] / adaptors / 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 "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 using Dali::VirtualKeyboard::TextDirection;
34 using Dali::VirtualKeyboard::LeftToRight;
35 using Dali::VirtualKeyboard::RightToLeft;
36
37 namespace
38 {
39
40 struct LocaleDirection
41 {
42   const char * locale;
43   const char * name;
44   TextDirection direction;
45 };
46
47 const LocaleDirection LOCALE_DIRECTION_LOOKUP_TABLE[] =
48 {
49   { "af", "Afrikaans",          LeftToRight },
50   { "am", "Amharic",            LeftToRight },
51   { "ar", "Arabic",             RightToLeft },
52   { "as", "Assamese",           LeftToRight },
53   { "az", "Azeri",              LeftToRight },
54   { "be", "Belarusian",         LeftToRight },
55   { "bg", "Bulgarian",          LeftToRight },
56   { "bn", "Bengali",            LeftToRight },
57   { "bo", "Tibetan",            LeftToRight },
58   { "bs", "Bosnian",            LeftToRight },
59   { "ca", "Catalan",            LeftToRight },
60   { "cs", "Czech",              LeftToRight },
61   { "cy", "Welsh",              LeftToRight },
62   { "da", "Danish",             LeftToRight },
63   { "de", "German",             LeftToRight },
64   { "dv", "Divehi",             RightToLeft },
65   { "el", "Greek",              LeftToRight },
66   { "en", "English",            LeftToRight },
67   { "es", "Spanish",            LeftToRight },
68   { "et", "Estonian",           LeftToRight },
69   { "eu", "Basque",             LeftToRight },
70   { "fa", "Farsi",              RightToLeft },
71   { "fi", "Finnish",            LeftToRight },
72   { "fo", "Faroese",            LeftToRight },
73   { "fr", "French",             LeftToRight },
74   { "gd", "Gaelic",             LeftToRight },
75   { "gl", "Galician",           LeftToRight },
76   { "gn", "Guarani",            LeftToRight },
77   { "gu", "Gujarati",           LeftToRight },
78   { "he", "Hebrew",             RightToLeft },
79   { "hi", "Hindi",              LeftToRight },
80   { "hr", "Croatian",           LeftToRight },
81   { "hu", "Hungarian",          LeftToRight },
82   { "hy", "Armenian",           LeftToRight },
83   { "id", "Indonesian",         LeftToRight },
84   { "is", "Icelandic",          LeftToRight },
85   { "it", "Italian",            LeftToRight },
86   { "ja", "Japanese",           LeftToRight },
87   { "ka", "Georgian",           LeftToRight },
88   { "kk", "Kazakh",             RightToLeft },
89   { "km", "Khmer",              LeftToRight },
90   { "kn", "Kannada",            LeftToRight },
91   { "ko", "Korean",             LeftToRight },
92   { "ks", "Kashmiri",           RightToLeft },
93   { "la", "Latin",              LeftToRight },
94   { "lo", "Lao",                LeftToRight },
95   { "lt", "Lithuanian",         LeftToRight },
96   { "lv", "Latvian",            LeftToRight },
97   { "mi", "Maori",              LeftToRight },
98   { "mk", "FYRO Macedonia",     LeftToRight },
99   { "ml", "Malayalam",          LeftToRight },
100   { "mn", "Mongolian",          LeftToRight },
101   { "mr", "Marathi",            LeftToRight },
102   { "ms", "Malay",              LeftToRight },
103   { "mt", "Maltese",            LeftToRight },
104   { "my", "Burmese",            LeftToRight },
105   { "nb", "Norwegian: Bokml",   LeftToRight },
106   { "ne", "Nepali",             LeftToRight },
107   { "nl", "Dutch",              LeftToRight },
108   { "nn", "Norwegian: Nynorsk", LeftToRight },
109   { "or", "Oriya",              LeftToRight },
110   { "pa", "Punjabi",            LeftToRight },
111   { "pl", "Polish",             LeftToRight },
112   { "pt", "Portuguese",         LeftToRight },
113   { "rm", "Raeto-Romance",      LeftToRight },
114   { "ro", "Romanian",           LeftToRight },
115   { "ru", "Russian",            LeftToRight },
116   { "sa", "Sanskrit",           LeftToRight },
117   { "sb", "Sorbian",            LeftToRight },
118   { "sd", "Sindhi",             LeftToRight },
119   { "si", "Sinhala",            LeftToRight },
120   { "sk", "Slovak",             LeftToRight },
121   { "sl", "Slovenian",          LeftToRight },
122   { "so", "Somali",             LeftToRight },
123   { "sq", "Albanian",           LeftToRight },
124   { "sr", "Serbian",            LeftToRight },
125   { "sv", "Swedish",            LeftToRight },
126   { "sw", "Swahili",            LeftToRight },
127   { "ta", "Tamil",              LeftToRight },
128   { "te", "Telugu",             LeftToRight },
129   { "tg", "Tajik",              RightToLeft },
130   { "th", "Thai",               LeftToRight },
131   { "tk", "Turkmen",            LeftToRight },
132   { "tn", "Setsuana",           LeftToRight },
133   { "tr", "Turkish",            LeftToRight },
134   { "ts", "Tsonga",             LeftToRight },
135   { "tt", "Tatar",              LeftToRight },
136   { "uk", "Ukrainian",          LeftToRight },
137   { "ur", "Urdu",               RightToLeft },
138   { "uz", "Uzbek",              LeftToRight },
139   { "vi", "Vietnamese",         LeftToRight },
140   { "xh", "Xhosa",              LeftToRight },
141   { "yi", "Yiddish",            RightToLeft },
142   { "zh", "Chinese",            LeftToRight },
143   { "zu", "Zulu",               LeftToRight },
144
145   { NULL, NULL, LeftToRight }
146 };
147
148 } // unnamed namespace
149
150 TextDirection GetTextDirection( std::string locale )
151 {
152   TextDirection direction( LeftToRight );
153
154   if ( !locale.empty() && locale.size() > 2 )
155   {
156     // We're only interested in the first two characters
157     locale.resize(2);
158
159     for ( const LocaleDirection* iter = &LOCALE_DIRECTION_LOOKUP_TABLE[0]; iter->locale; ++iter )
160     {
161       if ( !locale.compare( iter->locale ) )
162       {
163         direction = iter->direction;
164         break;
165       }
166     }
167   }
168
169   return direction;
170 }
171
172 } // namespace Locale
173
174 } // namespace Adaptor
175
176 } // namespace Internal
177
178 } // namespace Dali