LanguageTag constructor
LanguageTag(})
Implementation
factory LanguageTag(String language,
{String? extlang, String? script, String? region, String? variant}) {
var locLanguage = language.toLowerCase();
if (!_isCorrectLanguage(locLanguage)) {
throw ArgumentError('Incorrect language subtag "$locLanguage"');
}
var locExtlang = extlang?.toLowerCase() ?? '';
if (locExtlang.isNotEmpty && !_isCorrectExtlang(locExtlang)) {
throw ArgumentError('Incorrect extlang subtag "$locExtlang"');
}
var locScript = unfilled(script) ? '' : capitalizeAndLowercase(script!);
if (locScript.isNotEmpty && !_isCorrectScript(locScript)) {
throw ArgumentError('Incorrect script subtag "$locScript"');
}
// tries to construct a Region to test if the code is correct
Region? locRegion;
if (filled(region)) {
locRegion = Region(region!);
}
var locVariant = variant?.toLowerCase() ?? '';
if (locVariant.isNotEmpty && !_isCorrectVariant(locVariant)) {
throw ArgumentError('Incorrect variant subtag "$locVariant"');
}
var languageTag = LanguageTag._(locLanguage,
extlang: locExtlang,
script: locScript,
region: locRegion,
variant: locVariant);
if (_existingLocales.containsKey(languageTag.code)) {
return _existingLocales[languageTag.code]!;
}
_existingLocales[languageTag.code] = languageTag;
return languageTag;
}