| 161 | } |
| 162 | |
| 163 | vector<LanguageIndex> PrioritizedMapLanguageIndexes(vector<LanguageIndex> const regionalLanguageIndexes) |
| 164 | { |
| 165 | AlternativeMapLanguageHandling const alternativeMapLanguageHandling = UsedAlternativeMapLanguageHandling(); |
| 166 | |
| 167 | vector<LanguageIndex> prioritizedMapLanguageIndexes = {}; |
| 168 | vector<LanguageIndex> const mapLanguageIndexes = GetMapLanguageIndexes(); |
| 169 | |
| 170 | if (!mapLanguageIndexes.empty() && mapLanguageIndexes.front() == kDefaultNameIndex) |
| 171 | { |
| 172 | prioritizedMapLanguageIndexes.push_back(kDefaultNameIndex); |
| 173 | for (LanguageIndex const regionalLanguageIndex : regionalLanguageIndexes) |
| 174 | prioritizedMapLanguageIndexes.push_back(regionalLanguageIndex); |
| 175 | } |
| 176 | |
| 177 | LanguageIndex defaultLang = kUnsupportedLanguageIndex; |
| 178 | if (!regionalLanguageIndexes.empty()) |
| 179 | defaultLang = MatchingRegionalLanguageIndex(regionalLanguageIndexes, mapLanguageIndexes); |
| 180 | |
| 181 | for (LanguageIndex const mapLanguageIndex : mapLanguageIndexes) |
| 182 | { |
| 183 | if (alternativeMapLanguageHandling != AlternativeMapLanguageHandling::IgnoreAlternatives || |
| 184 | prioritizedMapLanguageIndexes.empty()) |
| 185 | { |
| 186 | if (alternativeMapLanguageHandling != AlternativeMapLanguageHandling::LocalOnly && |
| 187 | find(prioritizedMapLanguageIndexes.begin(), prioritizedMapLanguageIndexes.end(), mapLanguageIndex) == |
| 188 | prioritizedMapLanguageIndexes.end()) |
| 189 | prioritizedMapLanguageIndexes.push_back(mapLanguageIndex); |
| 190 | |
| 191 | if (defaultLang != kUnsupportedLanguageIndex && defaultLang == mapLanguageIndex) |
| 192 | { |
| 193 | if (mapLanguageIndex != kDefaultNameIndex) |
| 194 | prioritizedMapLanguageIndexes.push_back(defaultLang); |
| 195 | prioritizedMapLanguageIndexes.push_back(kDefaultNameIndex); |
| 196 | } |
| 197 | |
| 198 | if (alternativeMapLanguageHandling != AlternativeMapLanguageHandling::LocalOnly) |
| 199 | { |
| 200 | vector<LanguageIndex> const similarMapLanguageIndexes = SimilarLanguageIndexes(mapLanguageIndex); |
| 201 | prioritizedMapLanguageIndexes.insert(prioritizedMapLanguageIndexes.cend(), similarMapLanguageIndexes.cbegin(), |
| 202 | similarMapLanguageIndexes.cend()); |
| 203 | } |
| 204 | } |
| 205 | } |
| 206 | |
| 207 | if (alternativeMapLanguageHandling == AlternativeMapLanguageHandling::LocalOnly) |
| 208 | { |
| 209 | LanguageIndex mapLanguageIndex = mapLanguageIndexes.front(); |
| 210 | prioritizedMapLanguageIndexes.push_back(mapLanguageIndex); |
| 211 | |
| 212 | vector<LanguageIndex> const similarLanguageIndexes = SimilarLanguageIndexes(mapLanguageIndex); |
| 213 | prioritizedMapLanguageIndexes.insert(prioritizedMapLanguageIndexes.cend(), similarLanguageIndexes.cbegin(), |
| 214 | similarLanguageIndexes.cend()); |
| 215 | } |
| 216 | |
| 217 | prioritizedMapLanguageIndexes.push_back(kInternationalNameIndex); |
| 218 | prioritizedMapLanguageIndexes.push_back(kEnglishLanguageIndex); |
| 219 | prioritizedMapLanguageIndexes.push_back(kDefaultNameIndex); |
| 220 |
no test coverage detected