commit 4c18a49c879518f763985b6171fe5f4491d0f019
Author: Jean-Marc Lasgouttes <lasgout...@lyx.org>
Date:   Wed Feb 6 15:49:53 2019 +0100

    Fix algorithm for finding localized files
    
    Now we search in priority with the GUI language, and then the
    language(s) specified in the LANGUAGES environment variable.
    Preoviously, the GUI language would only be considered when
    LANGUAGES was not set (which was a bug).
    
    Take this opportunity to remove old compatibility code from 2007.
    
    (cherry picked from commit e203bf519b4dd69f17a2f8cabb6607d2f73dce71)
---
 src/support/filetools.cpp |   35 +++++++++--------------------------
 status.23x                |    3 +++
 2 files changed, 12 insertions(+), 26 deletions(-)

diff --git a/src/support/filetools.cpp b/src/support/filetools.cpp
index 37fd14f..c91e5c4 100644
--- a/src/support/filetools.cpp
+++ b/src/support/filetools.cpp
@@ -357,25 +357,20 @@ FileName const libFileSearch(string const & dir, string 
const & name,
 FileName const i18nLibFileSearch(string const & dir, string const & name,
                  string const & ext)
 {
-       /* The highest priority value is the `LANGUAGE' environment
-          variable. But we don't use the value if the currently
-          selected locale is the C locale. This is a GNU extension.
-
-          Otherwise, w use a trick to guess what support/gettext.has done:
-          each po file is able to tell us its name. (JMarc)
-       */
-
+       // if the LANGUAGE variable is set, use it as a fallback for searching 
for files.
        string lang = getGuiMessages().language();
        string const language = getEnv("LANGUAGE");
-       if (!lang.empty() && !language.empty())
-               lang = language;
+       if (!language.empty())
+               lang += ":" + language;
 
-       string l;
-       lang = split(lang, l, ':');
-       while (!l.empty()) {
+       for (auto const & l : getVectorFromString(lang, ":")) {
                FileName tmp;
                // First try with the full name
-               tmp = libFileSearch(addPath(dir, l), name, ext);
+               // `en' files are not in a subdirectory
+               if (l == "en")
+                       tmp = libFileSearch(dir, name, ext);
+               else
+                       tmp = libFileSearch(addPath(dir, l), name, ext);
                if (!tmp.empty())
                        return tmp;
 
@@ -386,18 +381,6 @@ FileName const i18nLibFileSearch(string const & dir, 
string const & name,
                        if (!tmp.empty())
                                return tmp;
                }
-
-#if 1
-               // For compatibility, to be removed later (JMarc)
-               tmp = libFileSearch(dir, token(l, '_', 0) + '_' + name,
-                                   ext);
-               if (!tmp.empty()) {
-                       lyxerr << "i18nLibFileSearch: File `" << tmp
-                              << "' has been found by the old method" <<endl;
-                       return tmp;
-               }
-#endif
-               lang = split(lang, l, ':');
        }
 
        return libFileSearch(dir, name, ext);
diff --git a/status.23x b/status.23x
index e1402cf..2773b57 100644
--- a/status.23x
+++ b/status.23x
@@ -144,6 +144,9 @@ What's new
 
 - Expand environment variables when modifying the PATH prefix.
 
+- Fix language of Help documents when LyX UI language is different from
+  OS UI language.
+
 
 
 * INTERNALS

Reply via email to