]> git.lyx.org Git - lyx.git/blobdiff - src/LaTeXFeatures.cpp
Make sure we do not crash here in release mode.
[lyx.git] / src / LaTeXFeatures.cpp
index 39076324334b2d8f70554baef9b585c72669ad60..2cfc1ce6e2275940c4cb69f7f97f0eb3b11634f9 100644 (file)
@@ -614,7 +614,8 @@ char const * simplefeatures[] = {
        "amscd",
        "slashed",
        "multirow",
-       "tfrupee"
+       "tfrupee",
+       "undertilde",
 };
 
 int const nb_simplefeatures = sizeof(simplefeatures) / sizeof(char const *);
@@ -1202,8 +1203,7 @@ docstring const LaTeXFeatures::getTClassI18nPreamble(bool use_babel, bool use_po
                                continue;
                        docstring const type = from_ascii(fl.floattype());
                        docstring const flname = from_utf8(fl.name());
-                       docstring name = translateIfPossible(flname,
-                               buffer().language()->code());
+                       docstring name = buffer().language()->translateLayout(fl.name());
                        // only request translation if we have a real translation
                        // (that differs from the source)
                        if (use_polyglossia && flname != name)
@@ -1215,13 +1215,20 @@ docstring const LaTeXFeatures::getTClassI18nPreamble(bool use_babel, bool use_po
                                        type, name,
                                        from_ascii(buffer().language()->babel())));
                        for (lang_it lit = lbeg; lit != lend; ++lit) {
-                               name = translateIfPossible(flname,
-                                       (*lit)->code());
-                               if (use_polyglossia && flname != name)
+                               string const code = (*lit)->code();
+                               name = (*lit)->translateLayout(fl.name());
+                               // we assume we have a suitable translation if
+                               // either the language is English (we need to
+                               // translate into English if English is a secondary
+                               // language) or if translateIfPossible returns
+                               // something different to the English source.
+                               bool const have_translation =
+                                       (flname != name || contains(code, "en"));
+                               if (use_polyglossia && have_translation)
                                        snippets.insert(getFloatI18nPreamble(
                                                type, name,
                                                from_ascii((*lit)->polyglossia())));
-                               else if (flname != name)
+                               else if (have_translation)
                                        snippets.insert(getFloatI18nPreamble(
                                                type, name,
                                                from_ascii((*lit)->babel())));
@@ -1341,9 +1348,8 @@ void LaTeXFeatures::getFloatDefinitions(odocstream & os) const
                        docstring const ext = from_ascii(fl.ext());
                        docstring const within = from_ascii(fl.within());
                        docstring const style = from_ascii(fl.style());
-                       docstring const name = translateIfPossible(
-                                       from_utf8(fl.name()),
-                                       buffer().language()->code());
+                       docstring const name =
+                               buffer().language()->translateLayout(fl.name());
                        os << "\\floatstyle{" << style << "}\n"
                           << "\\newfloat{" << type << "}{" << placement
                           << "}{" << ext << '}';