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:
committed by
Adrien Destugues
parent
2703c740d8
commit
e5fb17f0ca
@@ -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.
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user