- std::set<docstring> callers;
- return theCounter(counter, callers);
+ CounterList::const_iterator it = counterList_.find(counter);
+ if (it == counterList_.end())
+ return from_ascii("??");
+ Counter const & ctr = it->second;
+ Counter::StringMap & sm = ctr.flatLabelStrings(appendix());
+ Counter::StringMap::iterator smit = sm.find(lang);
+ if (smit != sm.end())
+ return counterLabel(smit->second, lang);
+
+ vector<docstring> callers;
+ docstring const & fls = flattenLabelString(counter, appendix(),
+ lang, callers);
+ sm[lang] = fls;
+ return counterLabel(fls, lang);