{"id":1679,"library":"python-iso639","title":"ISO 639 Language Codes","description":"python-iso639 provides a comprehensive and easy-to-use interface to ISO 639 language codes, including 639-1, 639-2, and 639-3, along with their names and associated information. It is actively maintained with frequent updates to the underlying ISO 639 data from SIL. The current version is 2026.1.31.","status":"active","version":"2026.1.31","language":"en","source_language":"en","source_url":"https://github.com/jacksonllee/iso639","tags":["i18n","locale","language","iso639","internationalization"],"install":[{"cmd":"pip install python-iso639","lang":"bash","label":"Install stable release"}],"dependencies":[],"imports":[{"symbol":"Language","correct":"from iso639 import Language"},{"symbol":"languages","correct":"from iso639 import languages"}],"quickstart":{"code":"from iso639 import Language, languages\n\n# Query a language by its ISO 639-1 code\nenglish_lang = Language.from_part1(\"en\")\nprint(f\"639-1 'en' name: {english_lang.name}\")\n\n# Query by ISO 639-3 code\njapanese_lang = Language.from_part3(\"jpn\")\nprint(f\"639-3 'jpn' name: {japanese_lang.name}\")\n\n# Get all languages\nprint(f\"Total languages in database: {len(languages)}\")\n\n# Search languages by name (case-insensitive, strict_case=False)\nspanish_languages = languages.match(\"Spanish\", strict_case=False)\nprint(\"Matching 'Spanish' (case-insensitive):\")\nfor lang in spanish_languages:\n    print(f\"- {lang.name} ({lang.part1 if lang.part1 else lang.part3})\")\n","lang":"python","description":"This quickstart demonstrates how to import the `Language` class and `languages` collection, query languages using ISO 639-1 and 639-3 codes, and search for languages by name with case-insensitivity."},"warnings":[{"fix":"Replace `exact=True` with `strict_case=True` (or omit as it's the default). Replace `exact=False` with `strict_case=False`. Note that `strict_case=True` is the default, making matching case-sensitive by default.","message":"The `exact` keyword argument in `Language.match` was removed and replaced with `strict_case` in version 2025.11.11. The default behavior for case-insensitivity also changed.","severity":"breaking","affected_versions":">=2025.11.11"},{"fix":"Always explicitly set `strict_case=False` if you need case-insensitive matching, or `strict_case=True` if you need case-sensitive matching (which is the default from 2025.11.11 onwards).","message":"The default behavior for case-insensitivity in `Language.match` has changed multiple times. In 2025.2.18, case-insensitivity became the default. In 2025.11.11, it reverted to being opt-in (`strict_case=False`).","severity":"gotcha","affected_versions":"All versions, especially migrating between 2025.2.18 and 2025.11.11"},{"fix":"Upgrade your Python environment to 3.10 or newer.","message":"Support for Python 3.9 was dropped in version 2025.11.11.","severity":"breaking","affected_versions":">=2025.11.11"},{"fix":"Upgrade your Python environment to 3.9 or newer (or 3.10+ for the latest library versions).","message":"Support for Python 3.8 was dropped in version 2024.10.22.","severity":"breaking","affected_versions":">=2024.10.22"}],"env_vars":null,"last_verified":"2026-04-09T00:00:00.000Z","next_check":"2026-07-08T00:00:00.000Z"}