]> git.lyx.org Git - lyx.git/blobdiff - src/support/filetools.cpp
de.po
[lyx.git] / src / support / filetools.cpp
index 60bd72f9054b5e6d9e3498ee2f8efcaa28159943..e8119959fd66314a7e6a1c842fb6a086fb161ca8 100644 (file)
@@ -356,25 +356,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;
 
@@ -385,18 +380,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);
@@ -933,9 +916,9 @@ FileName const unzipFile(FileName const & zipped_file, string const & unzipped_f
                unzippedFileName(zipped_file.toFilesystemEncoding()) :
                unzipped_file);
        // Run gunzip
-       string const command = "gunzip -c " +
-               zipped_file.toFilesystemEncoding() + " > " +
-               tempfile.toFilesystemEncoding();
+       string const command = "gunzip -c \"" +
+               zipped_file.toFilesystemEncoding() + "\" > \"" +
+               tempfile.toFilesystemEncoding() + "\"";
        Systemcall one;
        one.startscript(Systemcall::Wait, command);
        // test that command was executed successfully (anon)
@@ -948,6 +931,9 @@ docstring const makeDisplayPath(string const & path, unsigned int threshold)
 {
        string str = path;
 
+       // Recode URL encoded chars.
+       str = from_percent_encoding(str);
+
        // If file is from LyXDir, display it as if it were relative.
        string const system = package().system_support().absFileName();
        if (prefixIs(str, system) && str != system)