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