Make wxLanguageInfo::GetLocaleName() consistent across platforms

Check that the locale can be indeed set to the given string in Unix
version too, there doesn't seem to be any good reason to do it for MSW
only.
This commit is contained in:
Vadim Zeitlin
2017-07-14 18:20:16 +02:00
parent 2e2682116f
commit 7836dfbc77
3 changed files with 17 additions and 11 deletions

View File

@@ -72,17 +72,11 @@ struct WXDLLIMPEXP_BASE wxLanguageInfo
#endif // __WINDOWS__ #endif // __WINDOWS__
// return the locale name corresponding to this language usable with // return the locale name corresponding to this language usable with
// setlocale() on the current system // setlocale() on the current system or empty string if this locale is not
// supported
wxString GetLocaleName() const; wxString GetLocaleName() const;
}; };
// for Unix systems GetLocaleName() is trivial so implement it inline here, for
// MSW it's implemented in intl.cpp
#ifndef __WINDOWS__
inline wxString wxLanguageInfo::GetLocaleName() const { return CanonicalName; }
#endif // !__WINDOWS__
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// wxLocaleCategory: the category of locale settings // wxLocaleCategory: the category of locale settings
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------

View File

@@ -55,8 +55,13 @@ struct wxLanguageInfo
/// @onlyfor{wxmsw} /// @onlyfor{wxmsw}
wxUint32 GetLCID() const; wxUint32 GetLCID() const;
/// Return the locale name corresponding to this language usable with /**
/// @c setlocale() on the current system. Return the locale name corresponding to this language usable with
@c setlocale() on the current system.
If setting locale for this language is not supported, the returned
string is empty.
*/
wxString GetLocaleName() const; wxString GetLocaleName() const;
}; };

View File

@@ -205,7 +205,14 @@ wxString wxLanguageInfo::GetLocaleName() const
return CanSetLocale(locale) ? locale : wxString(); return CanSetLocale(locale) ? locale : wxString();
} }
#endif // __WINDOWS__ #else // !__WINDOWS__
wxString wxLanguageInfo::GetLocaleName() const
{
return CanSetLocale(CanonicalName) ? CanonicalName : wxString();
}
#endif // __WINDOWS__/!__WINDOWS__
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// wxLocale // wxLocale