Skip to content

Commit

Permalink
skipTerritory was not used in list_keyboards(), list_consolefonts(), …
Browse files Browse the repository at this point in the history
…and list_timezones()

Resolves: #18

Currently that makes no difference, but it could make a difference in future.

When more specific information is already available in _languages_db for a combination of

   languageId+'_'+scriptId+'_'+territoryId
   languageId+'_'+scriptId
   languageId+'_'+territoryId

then the less specific information in _territories_db should be ignored.

For example, list_inputmethods() already used skipTerritory correctly. If I disable that like this:

diff --git a/langtable/langtable.py b/langtable/langtable.py
index 7e36c50..32eb5a3 100644
--- a/langtable/langtable.py
+++ b/langtable/langtable.py
@@ -2119,7 +2119,7 @@ def list_inputmethods(concise=True, show_weights=False, languageId = None, scrip
                     ranked_inputmethods[inputmethod] *= extra_bonus
                 ranked_inputmethods[inputmethod] *= language_bonus
     territory_bonus = 1
-    if territoryId in _territories_db and not skipTerritory:
+    if territoryId in _territories_db:# and not skipTerritory:
         for inputmethod in _territories_db[territoryId].inputmethods:
             if _territories_db[territoryId].inputmethods[inputmethod] != 0:
                 if inputmethod not in ranked_inputmethods:

then this test case fails:

**********************************************************************
File "/local/mfabian/src/langtable/test_cases.py", line 544, in __main__.dummy
Failed example:
    list_inputmethods(languageId="sd", scriptId="Arab", territoryId="IN") # doctest: +NORMALIZE_WHITESPACE
Expected:
        []
Got:
    ['ibus/m17n:hi:inscript2', 'ibus/m17n:bn:inscript2', 'ibus/m17n:te:inscript2', 'ibus/m17n:mr:inscript2', 'ibus/m17n:ta:inscript2', 'ibus/m17n:ur:phonetic', 'ibus/m17n:gu:inscript2', 'ibus/m17n:kn:inscript2', 'ibus/m17n:ml:inscript2', 'ibus/m17n:or:inscript2', 'ibus/m17n:pa:inscript2-guru', 'ibus/m17n:as:inscript2', 'ibus/m17n:mai:inscript2', 'ibus/m17n:sat:inscript2-deva', 'ibus/m17n:ks:inscript2-deva', 'ibus/m17n:kok:inscript2-deva', 'ibus/m17n:sd:inscript2-deva', 'ibus/m17n:doi:inscript2-deva', 'ibus/m17n:mni:inscript2-beng', 'ibus/m17n:brx:inscript2-deva', 'ibus/m17n:ne:inscript2-deva']
**********************************************************************

I.e. even though scriptId="Arab" was explicitely requested, the
fallback to the territory "IN" gets all the Indian input methods
listed, even though none of them currently supports Arabic script.

So the fallback to territoryId should not be used if more specific information was found earlier.
  • Loading branch information
mike-fabian committed Aug 28, 2023
1 parent ed39298 commit 808bb83
Showing 1 changed file with 3 additions and 3 deletions.
6 changes: 3 additions & 3 deletions langtable/langtable.py
Original file line number Diff line number Diff line change
Expand Up @@ -2196,7 +2196,7 @@ def list_keyboards(concise=True, show_weights=False, languageId = None, scriptId
ranked_keyboards[keyboard] *= extra_bonus
ranked_keyboards[keyboard] *= language_bonus
territory_bonus = 1
if territoryId in _territories_db:
if territoryId in _territories_db and not skipTerritory:
for keyboard in _territories_db[territoryId].keyboards:
if _territories_db[territoryId].keyboards[keyboard] != 0:
if keyboard not in ranked_keyboards:
Expand Down Expand Up @@ -2430,7 +2430,7 @@ def list_consolefonts(concise=True, show_weights=False, languageId = None, scrip
ranked_consolefonts[consolefont] *= extra_bonus
ranked_consolefonts[consolefont] *= language_bonus
territory_bonus = 1
if territoryId in _territories_db:
if territoryId in _territories_db and not skipTerritory:
for consolefont in _territories_db[territoryId].consolefonts:
if _territories_db[territoryId].consolefonts[consolefont] != 0:
if consolefont not in ranked_consolefonts:
Expand Down Expand Up @@ -2511,7 +2511,7 @@ def list_timezones(concise=True, show_weights=False, languageId = None, scriptId
ranked_timezones[timezone] *= extra_bonus
ranked_timezones[timezone] *= language_bonus
territory_bonus = 100
if territoryId in _territories_db:
if territoryId in _territories_db and not skipTerritory:
for timezone in _territories_db[territoryId].timezones:
if _territories_db[territoryId].timezones[timezone] != 0:
if timezone not in ranked_timezones:
Expand Down

0 comments on commit 808bb83

Please sign in to comment.