+void Language::readLayoutTranslations(Language::TranslationMap const & trans, bool replace)
+{
+ TranslationMap::const_iterator const end = trans.end();
+ for (TranslationMap::const_iterator it = trans.begin(); it != end; ++it) {
+ if (replace
+ || layoutTranslations_.find(it->first) == layoutTranslations_.end())
+ layoutTranslations_[it->first] = it->second;
+ }
+}
+
+
+void Languages::read(FileName const & filename)
+{
+ Lexer lex;
+ lex.setFile(filename);
+ lex.setContext("Languages::read");
+ while (lex.isOK()) {
+ int le = lex.lex();
+ switch (le) {
+ case Lexer::LEX_FEOF:
+ continue;
+
+ default:
+ break;
+ }
+ if (lex.getString() != "Language") {
+ lex.printError("Unknown Language tag `$$Token'");
+ continue;
+ }
+ Language l;
+ l.read(lex);
+ if (!lex)
+ break;
+ if (l.lang() == "latex") {
+ // Check if latex language was not already defined.
+ LASSERT(latex_language == 0, continue);
+ static const Language latex_lang = l;
+ latex_language = &latex_lang;
+ } else if (l.lang() == "ignore") {
+ // Check if ignore language was not already defined.
+ LASSERT(ignore_language == 0, continue);
+ static const Language ignore_lang = l;
+ ignore_language = &ignore_lang;
+ } else
+ languagelist[l.lang()] = l;
+ }
+
+ default_language = getLanguage("english");
+ if (!default_language) {
+ LYXERR0("Default language \"english\" not found!");
+ default_language = &(*languagelist.begin()).second;
+ LYXERR0("Using \"" << default_language->lang() << "\" instead!");
+ }
+
+ // Read layout translations
+ FileName const path = libFileSearch(string(), "layouttranslations");
+ readLayoutTranslations(path);
+}
+
+