2 * Copyright (c) 2014 Samsung Electronics Co., Ltd.
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
19 #include "locale-utils.h"
33 using Dali::VirtualKeyboard::TextDirection;
34 using Dali::VirtualKeyboard::LeftToRight;
35 using Dali::VirtualKeyboard::RightToLeft;
40 struct LocaleDirection
44 TextDirection direction;
47 const LocaleDirection LOCALE_DIRECTION_LOOKUP_TABLE[] =
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 },
145 { NULL, NULL, LeftToRight }
148 } // unnamed namespace
150 TextDirection GetTextDirection( std::string locale )
152 TextDirection direction( LeftToRight );
154 if ( !locale.empty() && locale.size() > 2 )
156 // We're only interested in the first two characters
159 for ( const LocaleDirection* iter = &LOCALE_DIRECTION_LOOKUP_TABLE[0]; iter->locale; ++iter )
161 if ( !locale.compare( iter->locale ) )
163 direction = iter->direction;
172 } // namespace Locale
174 } // namespace Adaptor
176 } // namespace Internal