- LanguageList::const_iterator const lbeg = languagelist.begin();
- LanguageList::const_iterator const lend = languagelist.end();
- // Try for exact match first
- for (LanguageList::const_iterator lit = lbeg; lit != lend; ++lit) {
- if (match(code, lit->second) == ExactMatch)
- return &lit->second;
+ // 1/ exact match with any known language
+ for (auto const & l : languagelist_) {
+ if (match(code, l.second) == ExactMatch)
+ return &l.second;
+ }
+
+ // 2/ approximate with any known language
+ for (auto const & l : languagelist_) {
+ if (match(code, l.second) == ApproximateMatch)
+ return &l.second;
+ }
+ return nullptr;
+}
+
+
+Language const * Languages::getFromCode(string const & code,
+ set<Language const *> const & tryfirst) const
+{
+ // 1/ exact match with tryfirst list
+ for (auto const * lptr : tryfirst) {
+ if (match(code, *lptr) == ExactMatch)
+ return lptr;