/** * Sets the extended language subtags. * * <p>See RFC 5646 section 2.2.2. * * @param languageSubtags The extended language subtags, as three-letter * ISO 639-3 codes. {@code null} if none. */ private void setExtendedLanguageSubtags(final String... languageSubtags) throws LangTagException { if (languageSubtags == null || languageSubtags.length == 0) { this.languageSubtags = null; return; } this.languageSubtags = new String[languageSubtags.length]; for (int i=0; i < languageSubtags.length; i++) { ensureMaxLength(languageSubtags[i]); if (! isExtendedLanguageSubtag(languageSubtags[i])) throw new LangTagException("Invalid extended language subtag: Must be a three-letter ISO 639-3 code"); this.languageSubtags[i] = languageSubtags[i].toLowerCase(); } }
while (pos < subtags.length && isExtendedLanguageSubtag(subtags[pos])) extLangSubtags.add(subtags[pos++]);