Skip to content

Commit b90a566

Browse files
Add backport implementation of Locale.forLanguageTag().
1 parent b232c29 commit b90a566

3 files changed

Lines changed: 40 additions & 2 deletions

File tree

extractor/src/main/java/org/schabi/newpipe/extractor/localization/Localization.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.schabi.newpipe.extractor.localization;
22

33
import org.schabi.newpipe.extractor.exceptions.ParsingException;
4+
import org.schabi.newpipe.extractor.utils.LocaleCompat;
45

56
import java.io.Serializable;
67
import java.util.ArrayList;
@@ -38,7 +39,7 @@ public static List<Localization> listFrom(final String... localizationCodeList)
3839
* @param localizationCode a localization code, formatted like {@link #getLocalizationCode()}
3940
*/
4041
public static Localization fromLocalizationCode(final String localizationCode) {
41-
return fromLocale(Locale.forLanguageTag(localizationCode));
42+
return fromLocale(LocaleCompat.forLanguageTag(localizationCode));
4243
}
4344

4445
public Localization(@Nonnull final String languageCode, @Nullable final String countryCode) {

extractor/src/main/java/org/schabi/newpipe/extractor/stream/SubtitlesStream.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
import org.schabi.newpipe.extractor.MediaFormat;
66
import org.schabi.newpipe.extractor.services.youtube.ItagItem;
7+
import org.schabi.newpipe.extractor.utils.LocaleCompat;
78

89
import java.util.Locale;
910

@@ -232,7 +233,7 @@ private SubtitlesStream(@Nonnull final String id,
232233
final boolean autoGenerated,
233234
@Nullable final String manifestUrl) {
234235
super(id, content, isUrl, mediaFormat, deliveryMethod, manifestUrl);
235-
this.locale = Locale.forLanguageTag(languageCode);
236+
this.locale = LocaleCompat.forLanguageTag(languageCode);
236237
this.code = languageCode;
237238
this.format = mediaFormat;
238239
this.autoGenerated = autoGenerated;
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package org.schabi.newpipe.extractor.utils;
2+
3+
import java.util.Locale;
4+
5+
public class LocaleCompat {
6+
private LocaleCompat() {
7+
}
8+
9+
// Source: LocaleListCompat's private forLanguageTagCompat() method.
10+
// Use Locale.forLanguageTag() on API level >= 21 instead.
11+
public static Locale forLanguageTag(final String str) {
12+
if (str.contains("-")) {
13+
String[] args = str.split("-", -1);
14+
if (args.length > 2) {
15+
return new Locale(args[0], args[1], args[2]);
16+
} else if (args.length > 1) {
17+
return new Locale(args[0], args[1]);
18+
} else if (args.length == 1) {
19+
return new Locale(args[0]);
20+
}
21+
} else if (str.contains("_")) {
22+
String[] args = str.split("_", -1);
23+
if (args.length > 2) {
24+
return new Locale(args[0], args[1], args[2]);
25+
} else if (args.length > 1) {
26+
return new Locale(args[0], args[1]);
27+
} else if (args.length == 1) {
28+
return new Locale(args[0]);
29+
}
30+
} else {
31+
return new Locale(str);
32+
}
33+
34+
throw new IllegalArgumentException("Can not parse language tag: [" + str + "]");
35+
}
36+
}

0 commit comments

Comments
 (0)