]> git.lyx.org Git - features.git/commitdiff
fix selection of locale when loading help files
authorJean-Marc Lasgouttes <lasgouttes@lyx.org>
Wed, 24 Mar 2004 12:05:57 +0000 (12:05 +0000)
committerJean-Marc Lasgouttes <lasgouttes@lyx.org>
Wed, 24 Mar 2004 12:05:57 +0000 (12:05 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@8519 a592a061-630c-0410-9148-cb99ea01b6c8

src/support/ChangeLog
src/support/filetools.C

index 52efd0e293034e905aa9d090656032256bce5aa9..39415ee92654da36011b90d4cec9cee82d91b35c 100644 (file)
@@ -1,3 +1,8 @@
+2004-03-23  Jean-Marc Lasgouttes  <lasgouttes@lyx.org>
+
+       * filetools.C (i18nLibFileSearch): fix the logic to match closely
+       what gettext does
+
 2004-03-23  Angus Leeming  <leeming@lyx.org>
 
        * forkedcall.h (ForkedProcess, Forkedcall): change the signature of
index ccf6d560cec498ef8f0a3a49463438567289ba4a..05109c76b3808ae06659f201ee048a9413b4b5c9 100644 (file)
@@ -309,20 +309,32 @@ string const
 i18nLibFileSearch(string const & dir, string const & name,
                  string const & ext)
 {
-       // this comment is from intl/dcigettext.c. We try to mimick this
-       // behaviour here.
+       // the following comments are from intl/dcigettext.c. We try
+       // to mimick this behaviour here.
        /* 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] We have to proceed with the POSIX methods of
+          looking to `LC_ALL', `LC_xxx', and `LANG'. On some systems
+          this can be done by the `setlocale' function itself.  */
 
-       string const lc_all = GetEnv("LC_ALL");
-       string lang = GetEnv("LANGUAGE");
-       if (lang.empty() || lc_all == "C") {
-               lang = lc_all;
+#if defined HAVE_SETLOCALE && defined HAVE_LC_MESSAGES && defined HAVE_LOCALE_NULL
+       lang = setlocale(LC_MESSAGES, NULL);
+#else
+       string lang = GetEnv("LC_ALL");
+       if (lang.empty()) {
+               lang = GetEnv("LC_MESSAGES");
                if (lang.empty()) {
                        lang = GetEnv("LANG");
+                       if (lang.empty())
+                               lang = "C";
                }
        }
+#endif
+
+       string const language = GetEnv("LANGUAGE");
+       if (lang != "C" && !language.empty())
+               lang = language;
 
        lang = token(lang, '_', 0);