string Language::fontenc(BufferParams const & params) const
{
+ // Don't use LaTeX fonts, so just return the language's preferred
+ // (although this is not used with nonTeXFonts anyway).
+ if (params.useNonTeXFonts)
+ return fontenc_.front() == "ASCII" ? "T1" : fontenc_.front();
+
// Determine optimal font encoding
// We check whether the used rm font supports an encoding our language supports
LaTeXFont const & lf =
}
+string Language::dateFormat(size_t i) const
+{
+ if (i > dateformats_.size())
+ return string();
+ return dateformats_.at(i);
+}
+
+
bool Language::readLanguage(Lexer & lex)
{
enum LanguageTags {
LA_AS_BABELOPTS = 1,
LA_BABELNAME,
+ LA_DATEFORMATS,
LA_ENCODING,
LA_END,
LA_FONTENC,
LexerKeyword languageTags[] = {
{ "asbabeloptions", LA_AS_BABELOPTS },
{ "babelname", LA_BABELNAME },
+ { "dateformats", LA_DATEFORMATS },
{ "encoding", LA_ENCODING },
{ "end", LA_END },
{ "fontencoding", LA_FONTENC },
fontenc_.insert(fontenc_.end(), fe.begin(), fe.end());
break;
}
+ case LA_DATEFORMATS: {
+ lex.eatLine();
+ vector<string> const df =
+ getVectorFromString(trim(lex.getString(true), "\""), "|");
+ dateformats_.insert(dateformats_.end(), df.begin(), df.end());
+ break;
+ }
case LA_GUINAME:
lex >> display_;
break;
}
if (fontenc_.empty())
fontenc_.push_back("ASCII");
+ if (dateformats_.empty()) {
+ dateformats_.push_back("MMMM dd, yyyy");
+ dateformats_.push_back("MMM dd, yyyy");
+ dateformats_.push_back("M/d/yyyy");
+ }
return true;
}
} // namespace
+
+Language const * Languages::getFromCode(string const & code) const
+{
+ 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;
+ }
+ // If not found, look for lang prefix (without country) instead
+ for (LanguageList::const_iterator lit = lbeg; lit != lend; ++lit) {
+ if (match(code, lit->second) == ApproximateMatch)
+ return &lit->second;
+ }
+ LYXERR0("Unknown language `" + code + "'");
+ return 0;
+}
+
+
void Languages::readLayoutTranslations(support::FileName const & filename)
{
Lexer lex;
if (!lex.next(true))
break;
string const code = lex.getString();
- bool found = false;
- for (LanguageList::iterator lit = lbeg; lit != lend; ++lit) {
- if (match(code, lit->second) != NoMatch) {
- found = true;
- break;
- }
- }
+ bool found = getFromCode(code);
if (!found) {
lex.printError("Unknown language `" + code + "'");
break;