language_code 0.6.0-rc.2 copy "language_code: ^0.6.0-rc.2" to clipboard
language_code: ^0.6.0-rc.2 copied to clipboard

Get the current language code and Locale of the device. Also includes almost the language codes with English names and native names.

Language Code #

codecov

A Dart package for working with language codes and device locales.
Includes a complete set of ISO 639-1 (2-letter) and ISO 639-2 (3-letter) codes with English and native names.


Features #

  • Detect the device’s current language and locale
  • Convert between Locale and LanguageCodes
  • Look up by code, English name, or native name
  • Includes almost all ISO 639 codes with English + native names
  • Test-friendly (override locale or code in tests)
  • Auto-generated from Wikipedia’s ISO 639-2 list

Usage #

Get the current device language #

final languageCode = LanguageCode.code; // as LanguageCodes
final locale = LanguageCode.locale;     // as Locale

Get the raw device locale #

May not be supported by LanguageCodes:

final rawLocale = LanguageCode.rawLocale;

Get language details #

  • [code]: language code.
  • [englishName]: preferred English name.
  • [nativeName]: preferred native name.
  • [nativeLatinName]: preferred native latin name (if available).
  • [nativeNonLatinName]: preferred native non-latin name (if available).
var language = LanguageCodes.en;
print(language.englishName); // 'English'
print(language.nativeName);  // 'English'

language = LanguageCodes.vi;
print(language.englishName); // 'Vietnamese'
print(language.nativeName);  // 'Tiếng Việt'

ar("ar", r"Arabic", r"العربية", r"al'Arabiyyeẗ", r"العربية")
language = LanguageCodes.ar;
print(language.code); // ar
print(language.englishName); // Arabic
print(language.nativeName); // العربية
print(language.nativeLatinName); // al'Arabiyyeẗ
print(language.nativeNonLatinName); // العربية

Convert values to LanguageCodes #

LanguageCodes.fromLocale(Locale('vi'));        // → LanguageCodes.vi
LanguageCodes.fromCode('vi');                  // → LanguageCodes.vi
LanguageCodes.fromEnglishName('Vietnamese');   // → Iterable<LanguageCodes>
LanguageCodes.fromNativeName('Tiếng Việt');    // → Iterable<LanguageCodes>

⚠️ If no matching element is found, the methods throw a StateError unless an orElse is provided.

Optional default fallback #

final code = LanguageCode.tryCode(defaultCode: LanguageCodes.en);

Fallback order:

  1. Full rawLocale
  2. rawLocale.languageCode
  3. defaultCode (default: LanguageCodes.und)

Testing #

Override values in unit tests:

LanguageCode.setTestCode(LanguageCodes.vi);
// or
LanguageCode.setTestLocale(const Locale('fr'));

Reset with null to restore normal behavior.

⚠️ You can only use one override at a time.


Contributions #

Missing or incorrect language? Please open an issue or create a PR. The codes are auto-generated via a crawler, but feedback is always welcome.

17
likes
160
points
9.57k
downloads

Publisher

verified publisherlamnhan.dev

Weekly Downloads

Get the current language code and Locale of the device. Also includes almost the language codes with English names and native names.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

flutter

More

Packages that depend on language_code