1
0
Fork 0
mirror of https://github.com/vanitasvitae/Smack.git synced 2024-11-22 03:52:06 +01:00

[core] Correctly handle BCP 42 language tag creation from Locale for xml:lang

Fixes SMACK-952
This commit is contained in:
Florian Schmaus 2024-09-15 19:09:45 +02:00
parent 94375e3208
commit 49379afd3f

View file

@ -544,19 +544,21 @@ public abstract class ConnectionConfiguration {
* Returns the xml:lang string of the stream language to use when connecting to the server. * Returns the xml:lang string of the stream language to use when connecting to the server.
* *
* <p>If the developer sets the language to null, this will also return null, leading to * <p>If the developer sets the language to null, this will also return null, leading to
* the removal of the xml:lang tag from the stream. If a Locale("") is configured, this will * the removal of the xml:lang tag from the stream.</p>
* return "", which can be used as an override.</p>
* *
* @return the stream language to use when connecting to the server. * @return the stream language to use when connecting to the server or <code>null</code>.
*/ */
public String getXmlLang() { public String getXmlLang() {
// TODO: Change to Locale.toLanguageTag() once Smack's minimum Android API level is 21 or higher. if (language == null) {
// This will need a workaround for new Locale("").getLanguageTag() returning "und". Expected return null;
// behavior of this function: }
// - returns null if language is null
// - returns "" if language.getLanguage() returns the empty string String languageTag = language.toLanguageTag();
// - returns language.toLanguageTag() otherwise if (languageTag.equals("und")) {
return language != null ? language.toString().replace("_", "-") : null; return null;
}
return languageTag;
} }
/** /**