BCountry: add a GetPreferredLanguage method.

The APIs for this were introduced in ICU 63, so we'll need an update.
ICU 63 does not build with gcc2, so this method is disabled there.

Change-Id: Iabe49509ed6d4e578560d497d3ca336a97db4625
Reviewed-on: https://review.haiku-os.org/c/haiku/+/1874
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: Jérôme Duval <[email protected]>
This commit is contained in:
Adrien Destugues
2021-07-21 07:20:39 +00:00
committed by Adrien Destugues
parent 2703c740d8
commit e5fb17f0ca
3 changed files with 43 additions and 0 deletions
+13
View File
@@ -117,6 +117,19 @@
*/ */
/*!
\fn status_t BCountry::GetPreferredLanguage(BLanguage& language) const
\brief Get the most likely language to use in that country.
\param language A reference to a BLanguage to set to the preferred language.
\returns A status code, B_OK if everything went fine, or an error code
otherwise.
\since Haiku R1
*/
/*! /*!
\fn const char* BCountry::Code() const \fn const char* BCountry::Code() const
\brief Gets the ISO country code for the country. \brief Gets the ISO country code for the country.
+1
View File
@@ -39,6 +39,7 @@ public:
status_t GetName(BString& name, status_t GetName(BString& name,
const BLanguage* displayLanguage = NULL const BLanguage* displayLanguage = NULL
) const; ) const;
status_t GetPreferredLanguage(BLanguage&) const;
const char* Code() const; const char* Code() const;
// ISO-3166 // ISO-3166
+29
View File
@@ -139,6 +139,35 @@ BCountry::GetName(BString& name, const BLanguage* displayLanguage) const
} }
status_t
BCountry::GetPreferredLanguage(BLanguage& language) const
{
#if __GNUC__ == 2
return ENOSYS;
#else
status_t status = InitCheck();
if (status != B_OK)
return status;
icu::Locale* languageLocale = fICULocale->clone();
if (languageLocale == NULL)
return B_NO_MEMORY;
UErrorCode icuError = U_ZERO_ERROR;
languageLocale->addLikelySubtags(icuError);
if (U_FAILURE(icuError))
return B_ERROR;
status = language.SetTo(languageLocale->getLanguage());
delete languageLocale;
return status;
#endif
}
const char* const char*
BCountry::Code() const BCountry::Code() const
{ {