diff --git a/src/BufferParams.cpp b/src/BufferParams.cpp index 3291040806..af14a55aa4 100644 --- a/src/BufferParams.cpp +++ b/src/BufferParams.cpp @@ -1025,25 +1025,24 @@ bool BufferParams::writeLaTeX(odocstream & os, LaTeXFeatures & features, language_options << ','; language_options << language->babel(); } + // FIXME: don't hardcode this! // if Vietnamese is used, babel must directly be loaded // with language options, not in the class options, see // http://www.mail-archive.com/lyx-devel@lists.lyx.org/msg129417.html - size_t viet = language_options.str().find("vietnam"); - // viet = string::npos when not found + // // the same is for all other languages that are not directly supported by // babel, but where LaTeX-packages add babel support. // this is currently the case for Latvian, Lithuanian, and Mongolian - size_t latvian = language_options.str().find("latvian"); - size_t lithu = language_options.str().find("lithuanian"); - size_t mongo = language_options.str().find("mongolian"); + // // if Japanese is used, babel must directly be loaded // with language options, not in the class options, see // http://bugzilla.lyx.org/show_bug.cgi?id=4597#c4 - size_t japan = language_options.str().find("japanese"); if (lyxrc.language_global_options && !language_options.str().empty() - && viet == string::npos && japan == string::npos - && latvian == string::npos && lithu == string::npos - && mongo == string::npos) + && !features.hasLanguage("vietnam") + && !features.hasLanguage("latvian") + && !features.hasLanguage("lithuanian") + && !features.hasLanguage("mongolian") + && !features.hasLanguage("japanese")) clsoptions << language_options.str() << ','; } diff --git a/src/LaTeXFeatures.cpp b/src/LaTeXFeatures.cpp index a8660d776a..4fb328b638 100644 --- a/src/LaTeXFeatures.cpp +++ b/src/LaTeXFeatures.cpp @@ -431,6 +431,18 @@ bool LaTeXFeatures::hasLanguages() const } +bool LaTeXFeatures::hasLanguage(string const & lang) const +{ + LanguageList::const_iterator cit = UsedLanguages_.begin(); + LanguageList::const_iterator const end = UsedLanguages_.end(); + for (; cit != end; ++cit) { + if ((*cit)->babel() == lang) + return true; + } + return false; +} + + string LaTeXFeatures::getLanguages() const { ostringstream languages; diff --git a/src/LaTeXFeatures.h b/src/LaTeXFeatures.h index 1a484f730c..d93b96b092 100644 --- a/src/LaTeXFeatures.h +++ b/src/LaTeXFeatures.h @@ -89,6 +89,8 @@ public: void useLanguage(Language const *); /// bool hasLanguages() const; + /// \return true if the passed language name is used in the document. + bool hasLanguage(std::string const & lang) const; /// std::string getLanguages() const; ///