Skip to content

Resolve alternate language names through fromname - #55

Open
LavX wants to merge 1 commit into
Diaoul:mainfrom
LavX:feat/fromname-alternate-names
Open

Resolve alternate language names through fromname#55
LavX wants to merge 1 commit into
Diaoul:mainfrom
LavX:feat/fromname-alternate-names

Conversation

@LavX

@LavX LavX commented Jun 8, 2026

Copy link
Copy Markdown

Summary

NameConverter only indexed each language's single ISO 639-3 reference name, so any alternate spelling raised LanguageReverseError:

>>> Language.fromname('Pashto')   # the 'pus' reference name is 'Pushto'
LanguageReverseError: 'Pashto'
>>> Language.fromname('Divehi')   # the 'div' reference name is 'Dhivehi'
LanguageReverseError: 'Divehi'

Change

  • Bundle SIL's iso-639-3_Name_Index.tab (source: https://iso639-3.sil.org/sites/iso639-3/files/downloads/iso-639-3_Name_Index.tab) and register every print name as a reverse-only alias.
  • The forward direction is unchanged: Language('pus').name still returns the canonical reference name 'Pushto'. Reference names are seeded first, so they always win on any clash, and lookups stay case-insensitive.
  • Add a small curated COMMON_NAMES map for common names that no ISO source provides (e.g. 'Greek' -> ell, which SIL only lists as 'Modern Greek (1453-)').

Verified that no print name maps to more than one language (reverse stays deterministic) and that forward display names are unchanged.

>>> Language.fromname('Pashto'), Language.fromname('Maldivian'), Language.fromname('Flemish'), Language.fromname('Greek')
(<Language [ps]>, <Language [dv]>, <Language [nl]>, <Language [el]>)

Fixes #22
Fixes #23
Fixes #31
Fixes #24

NameConverter only indexed each language's single ISO 639-3 reference
name, so alternate spellings raised LanguageReverseError:

    >>> Language.fromname('Pashto')   # the 'pus' reference name is 'Pushto'
    LanguageReverseError: 'Pashto'

Bundle SIL's iso-639-3_Name_Index.tab and register every print name as a
reverse-only alias; the forward Language(x).name still returns the
canonical ISO 639-3 reference name. Reference names are seeded first so
they always win on any clash, and lookups stay case-insensitive. Also add
a small curated map for common names absent from every ISO source
(e.g. 'Greek' -> ell, which SIL only lists as 'Modern Greek (1453-)').

Fixes Diaoul#22
Fixes Diaoul#23
Fixes Diaoul#31
Fixes Diaoul#24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant