langtable 0.0.63__tar.gz → 0.0.65__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. {langtable-0.0.63 → langtable-0.0.65}/ChangeLog +15 -0
  2. {langtable-0.0.63 → langtable-0.0.65}/Makefile +8 -8
  3. {langtable-0.0.63 → langtable-0.0.65}/PKG-INFO +11 -7
  4. {langtable-0.0.63 → langtable-0.0.65}/README +10 -6
  5. {langtable-0.0.63 → langtable-0.0.65}/langtable/__init__.py +1 -1
  6. langtable-0.0.65/langtable/data/languages.xml.gz +0 -0
  7. langtable-0.0.65/langtable/data/territories.xml.gz +0 -0
  8. langtable-0.0.65/langtable/data/timezoneidparts.xml.gz +0 -0
  9. {langtable-0.0.63 → langtable-0.0.65}/langtable/langtable.py +87 -2
  10. {langtable-0.0.63 → langtable-0.0.65}/langtable.egg-info/PKG-INFO +11 -7
  11. {langtable-0.0.63 → langtable-0.0.65}/setup.py +1 -1
  12. {langtable-0.0.63 → langtable-0.0.65}/test_cases.py +30 -5
  13. {langtable-0.0.63 → langtable-0.0.65}/tools/list-missing-regions-and-languages.sh +1 -1
  14. langtable-0.0.63/langtable/data/languages.xml.gz +0 -0
  15. langtable-0.0.63/langtable/data/territories.xml.gz +0 -0
  16. langtable-0.0.63/langtable/data/timezoneidparts.xml.gz +0 -0
  17. {langtable-0.0.63 → langtable-0.0.65}/COPYING +0 -0
  18. {langtable-0.0.63 → langtable-0.0.65}/MANIFEST.in +0 -0
  19. {langtable-0.0.63 → langtable-0.0.65}/langtable/data/keyboards.xml.gz +0 -0
  20. {langtable-0.0.63 → langtable-0.0.65}/langtable/data/timezones.xml.gz +0 -0
  21. {langtable-0.0.63 → langtable-0.0.65}/langtable/schemas/keyboards.rng +0 -0
  22. {langtable-0.0.63 → langtable-0.0.65}/langtable/schemas/languages.rng +0 -0
  23. {langtable-0.0.63 → langtable-0.0.65}/langtable/schemas/territories.rng +0 -0
  24. {langtable-0.0.63 → langtable-0.0.65}/langtable/schemas/timezoneidparts.rng +0 -0
  25. {langtable-0.0.63 → langtable-0.0.65}/langtable/schemas/timezones.rng +0 -0
  26. {langtable-0.0.63 → langtable-0.0.65}/langtable.egg-info/SOURCES.txt +0 -0
  27. {langtable-0.0.63 → langtable-0.0.65}/langtable.egg-info/dependency_links.txt +0 -0
  28. {langtable-0.0.63 → langtable-0.0.65}/langtable.egg-info/not-zip-safe +0 -0
  29. {langtable-0.0.63 → langtable-0.0.65}/langtable.egg-info/top_level.txt +0 -0
  30. {langtable-0.0.63 → langtable-0.0.65}/main.py +0 -0
  31. {langtable-0.0.63 → langtable-0.0.65}/setup.cfg +0 -0
  32. {langtable-0.0.63 → langtable-0.0.65}/tools/compare_with_glib_source.py +0 -0
  33. {langtable-0.0.63 → langtable-0.0.65}/unicode-license.txt +0 -0
@@ -1,3 +1,18 @@
1
+ 2024-02-08 Mike FABIAN <mfabian@redhat.com>
2
+
3
+ * Add wuu, tok, glk, gbm, ssy
4
+ * Remove aa_ER.UTF-8@saaho
5
+ * Add kv_RU.UTF-8, chr_RU.UTF-8
6
+ * Add EU, EZ
7
+ * Improve README and Makefile (Resolves: https://github.com/mike-fabian/langtable/issues/19)
8
+ * Add more translations from CLDR
9
+ * Get translation changes from CLDR
10
+
11
+ 2023-09-19 Mike FABIAN <mfabian@redhat.com>
12
+
13
+ * Add new public functions list_all_{languages,locales,keyboards,territories,timezones,scripts,input_methods,console_fonts}
14
+ (See also the discussion at: https://gitlab.gnome.org/GNOME/gnome-desktop/-/merge_requests/159)
15
+
1
16
  2023-08-28 Mike FABIAN <mfabian@redhat.com>
2
17
 
3
18
  * Add more translations from CLDR
@@ -5,14 +5,11 @@ PWD := $(shell pwd)
5
5
  SRCDIR=$(PWD)
6
6
 
7
7
  .PHONY: gzip
8
- gzip:
9
- gzip --keep --force --best langtable/data/*.xml
8
+ gzip: langtable/data/keyboards.xml.gz langtable/data/languages.xml.gz langtable/data/territories.xml.gz langtable/data/timezones.xml.gz langtable/data/timezoneidparts.xml.gz
10
9
 
11
10
  .PHONY: test
12
11
  test: gzip
13
- #(cd langtable; python2 langtable.py)
14
12
  (cd langtable; python3 langtable.py)
15
- #python2 test_cases.py
16
13
  python3 test_cases.py
17
14
  (cd langtable; xmllint --noout --relaxng schemas/keyboards.rng data/keyboards.xml.gz)
18
15
  (cd langtable; xmllint --noout --relaxng schemas/languages.rng data/languages.xml.gz)
@@ -20,7 +17,7 @@ test: gzip
20
17
  (cd langtable; xmllint --noout --relaxng schemas/timezones.rng data/timezones.xml.gz)
21
18
  (cd langtable; xmllint --noout --relaxng schemas/timezoneidparts.rng data/timezoneidparts.xml.gz)
22
19
 
23
- .PHONE: check
20
+ .PHONY: check
24
21
  check: test
25
22
 
26
23
  .PHONY: dist
@@ -41,15 +38,15 @@ twine-upload-test: dist
41
38
  # check it here: https://pypi.org/manage/project/langtable/releases/
42
39
  .PHONY: twine-upload
43
40
  twine-upload: dist
44
- python3 -m twine upload --verbose dist/*
41
+ python3 -m twine upload --verbose --repository pypi dist/*
45
42
 
46
43
  .PHONY: pip-install-test
47
44
  pip-install-test:
48
- (cd /tmp; python3 -m pip install --user --ignore-installed --index-url https://test.pypi.org/simple/ --no-deps langtable)
45
+ (cd /tmp; python3 -m pip install --user --ignore-installed --no-cache-dir --index-url https://test.pypi.org/simple/ --no-deps langtable)
49
46
 
50
47
  .PHONY: pip-install
51
48
  pip-install:
52
- (cd /tmp; python3 -m pip install --user --ignore-installed --no-deps langtable)
49
+ (cd /tmp; python3 -m pip install --user --ignore-installed --no-cache-dir --no-deps langtable)
53
50
 
54
51
  .PHONY: clean
55
52
  clean:
@@ -69,6 +66,9 @@ review: mockbuild
69
66
  cp *.spec ./mockbuild-results/
70
67
  (cd ./mockbuild-results/; fedora-review -n langtable -m $(MOCK_CONFIG) )
71
68
 
69
+ %.xml.gz: %.xml
70
+ gzip --keep --force --best $< $@
71
+
72
72
  # .rnc files for editing with Emacs
73
73
  # https://fedoraproject.org/wiki/How_to_use_Emacs_for_XML_editing
74
74
  %.rnc: %.rng
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: langtable
3
- Version: 0.0.63
3
+ Version: 0.0.65
4
4
  Summary: guess reasonable defaults for locale, keyboard, territory, ...
5
5
  Home-page: https://github.com/mike-fabian/langtable
6
6
  Author: Mike FABIAN
@@ -53,12 +53,7 @@ To create a distribution tarball run
53
53
 
54
54
  To run the test cases in the source directory:
55
55
 
56
- make test-local
57
-
58
- To run the test cases using the installed files:
59
-
60
- make install DESTDIR=/usr
61
- make test DESTDIR=/usr
56
+ make test
62
57
 
63
58
  How to use it
64
59
  =============
@@ -71,6 +66,7 @@ Functions in the public API:
71
66
  list_locales()
72
67
  list_keyboards()
73
68
  list_common_languages()
69
+ list_common_locales()
74
70
  list_common_keyboards()
75
71
  list_consolefonts()
76
72
  list_inputmethods()
@@ -82,6 +78,14 @@ Functions in the public API:
82
78
  languageId()
83
79
  territoryId()
84
80
  supports_ascii()
81
+ list_all_languages()
82
+ list_all_locales()
83
+ list_all_keyboards()
84
+ list_all_territories()
85
+ list_all_timezones()
86
+ list_all_scripts()
87
+ list_all_input_methods()
88
+ list_all_console_fonts()
85
89
 
86
90
  Some examples to show the usage are found in the documentation
87
91
  of the public functions in langtable.py.
@@ -36,12 +36,7 @@ To create a distribution tarball run
36
36
 
37
37
  To run the test cases in the source directory:
38
38
 
39
- make test-local
40
-
41
- To run the test cases using the installed files:
42
-
43
- make install DESTDIR=/usr
44
- make test DESTDIR=/usr
39
+ make test
45
40
 
46
41
  How to use it
47
42
  =============
@@ -54,6 +49,7 @@ Functions in the public API:
54
49
  list_locales()
55
50
  list_keyboards()
56
51
  list_common_languages()
52
+ list_common_locales()
57
53
  list_common_keyboards()
58
54
  list_consolefonts()
59
55
  list_inputmethods()
@@ -65,6 +61,14 @@ Functions in the public API:
65
61
  languageId()
66
62
  territoryId()
67
63
  supports_ascii()
64
+ list_all_languages()
65
+ list_all_locales()
66
+ list_all_keyboards()
67
+ list_all_territories()
68
+ list_all_timezones()
69
+ list_all_scripts()
70
+ list_all_input_methods()
71
+ list_all_console_fonts()
68
72
 
69
73
  Some examples to show the usage are found in the documentation
70
74
  of the public functions in langtable.py.
@@ -10,5 +10,5 @@ from .langtable import _write_files
10
10
  # Deleting a module prevents one from import <pack>.somemodule1
11
11
  # directly. You can only import from <pack> objects defined or
12
12
  # imported in its __init__.py, and non-deleted submodules.
13
- del langtable
13
+ del langtable # type: ignore
14
14
 
@@ -34,6 +34,14 @@
34
34
  # languageId()
35
35
  # territoryId()
36
36
  # supports_ascii()
37
+ # list_all_languages()
38
+ # list_all_locales()
39
+ # list_all_keyboards()
40
+ # list_all_territories()
41
+ # list_all_timezones()
42
+ # list_all_scripts()
43
+ # list_all_input_methods()
44
+ # list_all_console_fonts()
37
45
  #
38
46
  # These are the functions which do not start with an “_” in their name.
39
47
  # All global functions and global variables whose name starts with an
@@ -97,6 +105,8 @@
97
105
  #
98
106
  ######################################################################
99
107
 
108
+ from typing import List
109
+ from typing import Dict
100
110
  import os
101
111
  import re
102
112
  import logging
@@ -110,7 +120,7 @@ Locale = collections.namedtuple(
110
120
  'Locale',
111
121
  ['language', 'script', 'territory', 'variant', 'encoding'])
112
122
 
113
- _INFO = {'data_files_read': []}
123
+ _INFO: Dict[str, List[str]] = {'data_files_read': []}
114
124
 
115
125
  # will be replaced by “make install”:
116
126
  _DATADIR = '/usr/share/langtable'
@@ -2528,6 +2538,80 @@ def list_timezones(concise=True, show_weights=False, languageId = None, scriptId
2528
2538
  else:
2529
2539
  return _ranked_list_to_list(ranked_list)
2530
2540
 
2541
+ def list_all_languages() -> List[str]:
2542
+ '''
2543
+ List all language ids langtable knows something about
2544
+ '''
2545
+ return sorted(_languages_db.keys())
2546
+
2547
+ def list_all_locales() -> List[str]:
2548
+ '''
2549
+ List all (glibc style) locales langtable knows something about
2550
+ '''
2551
+ all_locales = set()
2552
+ for (_key, item) in _languages_db.items():
2553
+ all_locales.update(item.locales)
2554
+ for (_key, item) in _territories_db.items():
2555
+ all_locales.update(item.locales)
2556
+ return sorted(all_locales)
2557
+
2558
+ def list_all_keyboards() -> List[str]:
2559
+ '''
2560
+ List all keyboards langtable knows something about
2561
+ '''
2562
+ return sorted(_keyboards_db.keys())
2563
+
2564
+ def list_all_territories() -> List[str]:
2565
+ '''
2566
+ List all territory ids langtable knows something about
2567
+ '''
2568
+ return sorted(_territories_db.keys())
2569
+
2570
+ def list_all_timezones() -> List[str]:
2571
+ '''
2572
+ List all timezone ids langtable knows something about
2573
+ '''
2574
+ all_timezones = set()
2575
+ all_timezones.update(list(_timezones_db.keys()))
2576
+ for (_key, item) in _languages_db.items():
2577
+ all_timezones.update(item.timezones)
2578
+ for (_key, item) in _territories_db.items():
2579
+ all_timezones.update(item.timezones)
2580
+ return sorted(all_timezones)
2581
+
2582
+ def list_all_scripts() -> List[str]:
2583
+ '''
2584
+ List all script ids langtable knows something about
2585
+ '''
2586
+ all_scripts = set()
2587
+ for (_key, item) in _languages_db.items():
2588
+ all_scripts.update(item.scripts)
2589
+ for (_key, item) in _territories_db.items():
2590
+ all_scripts.update(item.scripts)
2591
+ return sorted(all_scripts)
2592
+
2593
+ def list_all_input_methods() -> List[str]:
2594
+ '''
2595
+ List all input methods langtable knows something about
2596
+ '''
2597
+ all_inputmethods = set()
2598
+ for (_key, item) in _languages_db.items():
2599
+ all_inputmethods.update(item.inputmethods)
2600
+ for (_key, item) in _territories_db.items():
2601
+ all_inputmethods.update(item.inputmethods)
2602
+ return sorted(all_inputmethods)
2603
+
2604
+ def list_all_console_fonts() -> List[str]:
2605
+ '''
2606
+ List all console fonts langtable knows something about
2607
+ '''
2608
+ all_consolefonts = set()
2609
+ for (_key, item) in _languages_db.items():
2610
+ all_consolefonts.update(item.consolefonts)
2611
+ for (_key, item) in _territories_db.items():
2612
+ all_consolefonts.update(item.consolefonts)
2613
+ return sorted(all_consolefonts)
2614
+
2531
2615
  def supports_ascii(keyboardId=None):
2532
2616
  '''Check whether a keyboard layout supports ASCII
2533
2617
 
@@ -2555,7 +2639,8 @@ def version():
2555
2639
  '''
2556
2640
  Return version of langtable
2557
2641
  '''
2558
- import pkg_resources # part of setuptools
2642
+ # pkg_resources is part of setuptools
2643
+ import pkg_resources # type: ignore
2559
2644
  return pkg_resources.require("langtable")[0].version
2560
2645
 
2561
2646
  def info():
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: langtable
3
- Version: 0.0.63
3
+ Version: 0.0.65
4
4
  Summary: guess reasonable defaults for locale, keyboard, territory, ...
5
5
  Home-page: https://github.com/mike-fabian/langtable
6
6
  Author: Mike FABIAN
@@ -53,12 +53,7 @@ To create a distribution tarball run
53
53
 
54
54
  To run the test cases in the source directory:
55
55
 
56
- make test-local
57
-
58
- To run the test cases using the installed files:
59
-
60
- make install DESTDIR=/usr
61
- make test DESTDIR=/usr
56
+ make test
62
57
 
63
58
  How to use it
64
59
  =============
@@ -71,6 +66,7 @@ Functions in the public API:
71
66
  list_locales()
72
67
  list_keyboards()
73
68
  list_common_languages()
69
+ list_common_locales()
74
70
  list_common_keyboards()
75
71
  list_consolefonts()
76
72
  list_inputmethods()
@@ -82,6 +78,14 @@ Functions in the public API:
82
78
  languageId()
83
79
  territoryId()
84
80
  supports_ascii()
81
+ list_all_languages()
82
+ list_all_locales()
83
+ list_all_keyboards()
84
+ list_all_territories()
85
+ list_all_timezones()
86
+ list_all_scripts()
87
+ list_all_input_methods()
88
+ list_all_console_fonts()
85
89
 
86
90
  Some examples to show the usage are found in the documentation
87
91
  of the public functions in langtable.py.
@@ -8,7 +8,7 @@ setuptools.setup(
8
8
  # within the egg directory easily:
9
9
  zip_safe=False,
10
10
  name='langtable',
11
- version='0.0.63',
11
+ version='0.0.65',
12
12
  packages=setuptools.find_packages(),
13
13
  description='guess reasonable defaults for locale, keyboard, territory, ...',
14
14
  long_description=codecs.open('README', encoding='UTF-8').read(),
@@ -18,6 +18,14 @@ def dummy():
18
18
  >>> from langtable import languageId
19
19
  >>> from langtable import list_common_languages
20
20
  >>> from langtable import list_common_keyboards
21
+ >>> from langtable import list_all_languages
22
+ >>> from langtable import list_all_locales
23
+ >>> from langtable import list_all_keyboards
24
+ >>> from langtable import list_all_territories
25
+ >>> from langtable import list_all_timezones
26
+ >>> from langtable import list_all_scripts
27
+ >>> from langtable import list_all_input_methods
28
+ >>> from langtable import list_all_console_fonts
21
29
 
22
30
  ######################################################################
23
31
  # Start of tests to reproduce the results from mangleLocale(inLocale) in anaconda, see:
@@ -726,7 +734,7 @@ def dummy():
726
734
 
727
735
  >>> _test_language_territory(show_weights=False, languageId="ar", territoryId="IN") # doctest: +NORMALIZE_WHITESPACE
728
736
  ar: ['ar_EG.UTF-8', 'ar_SD.UTF-8', 'ar_DZ.UTF-8', 'ar_MA.UTF-8', 'ar_IQ.UTF-8', 'ar_SA.UTF-8', 'ar_YE.UTF-8', 'ar_SY.UTF-8', 'ar_TN.UTF-8', 'ar_LY.UTF-8', 'ar_JO.UTF-8', 'ar_AE.UTF-8', 'ar_LB.UTF-8', 'ar_KW.UTF-8', 'ar_OM.UTF-8', 'ar_QA.UTF-8', 'ar_BH.UTF-8', 'ar_IN.UTF-8', 'ar_SS.UTF-8']
729
- IN: ['hi_IN.UTF-8', 'en_IN.UTF-8', 'bn_IN.UTF-8', 'te_IN.UTF-8', 'mr_IN.UTF-8', 'ta_IN.UTF-8', 'ur_IN.UTF-8', 'gu_IN.UTF-8', 'kn_IN.UTF-8', 'ml_IN.UTF-8', 'or_IN.UTF-8', 'pa_IN.UTF-8', 'as_IN.UTF-8', 'mai_IN.UTF-8', 'sat_IN.UTF-8', 'ks_IN.UTF-8', 'ks_IN.UTF-8@devanagari', 'kok_IN.UTF-8', 'sd_IN.UTF-8', 'sd_IN.UTF-8@devanagari', 'doi_IN.UTF-8', 'mni_IN.UTF-8', 'brx_IN.UTF-8', 'raj_IN.UTF-8', 'mjw_IN.UTF-8', 'anp_IN.UTF-8', 'bhb_IN.UTF-8', 'bho_IN.UTF-8', 'bo_IN.UTF-8', 'hne_IN.UTF-8', 'mag_IN.UTF-8', 'tcy_IN.UTF-8', 'ar_IN.UTF-8']
737
+ IN: ['hi_IN.UTF-8', 'en_IN.UTF-8', 'bn_IN.UTF-8', 'te_IN.UTF-8', 'mr_IN.UTF-8', 'ta_IN.UTF-8', 'ur_IN.UTF-8', 'gu_IN.UTF-8', 'kn_IN.UTF-8', 'ml_IN.UTF-8', 'or_IN.UTF-8', 'pa_IN.UTF-8', 'as_IN.UTF-8', 'mai_IN.UTF-8', 'sat_IN.UTF-8', 'ks_IN.UTF-8', 'ks_IN.UTF-8@devanagari', 'kok_IN.UTF-8', 'sd_IN.UTF-8', 'sd_IN.UTF-8@devanagari', 'doi_IN.UTF-8', 'mni_IN.UTF-8', 'brx_IN.UTF-8', 'raj_IN.UTF-8', 'mjw_IN.UTF-8', 'anp_IN.UTF-8', 'bhb_IN.UTF-8', 'bho_IN.UTF-8', 'bo_IN.UTF-8', 'hne_IN.UTF-8', 'mag_IN.UTF-8', 'tcy_IN.UTF-8', 'ar_IN.UTF-8', 'gbm_IN.UTF-8']
730
738
  +: ['ar_IN.UTF-8']
731
739
  ar: ['ara', 'ara(azerty)', 'iq', 'ma', 'sy']
732
740
  IN: ['in(eng)', 'ara']
@@ -742,7 +750,7 @@ def dummy():
742
750
 
743
751
  >>> _test_language_territory(show_weights=False, languageId="as", territoryId="IN") # doctest: +NORMALIZE_WHITESPACE
744
752
  as: ['as_IN.UTF-8']
745
- IN: ['hi_IN.UTF-8', 'en_IN.UTF-8', 'bn_IN.UTF-8', 'te_IN.UTF-8', 'mr_IN.UTF-8', 'ta_IN.UTF-8', 'ur_IN.UTF-8', 'gu_IN.UTF-8', 'kn_IN.UTF-8', 'ml_IN.UTF-8', 'or_IN.UTF-8', 'pa_IN.UTF-8', 'as_IN.UTF-8', 'mai_IN.UTF-8', 'sat_IN.UTF-8', 'ks_IN.UTF-8', 'ks_IN.UTF-8@devanagari', 'kok_IN.UTF-8', 'sd_IN.UTF-8', 'sd_IN.UTF-8@devanagari', 'doi_IN.UTF-8', 'mni_IN.UTF-8', 'brx_IN.UTF-8', 'raj_IN.UTF-8', 'mjw_IN.UTF-8', 'anp_IN.UTF-8', 'bhb_IN.UTF-8', 'bho_IN.UTF-8', 'bo_IN.UTF-8', 'hne_IN.UTF-8', 'mag_IN.UTF-8', 'tcy_IN.UTF-8', 'ar_IN.UTF-8']
753
+ IN: ['hi_IN.UTF-8', 'en_IN.UTF-8', 'bn_IN.UTF-8', 'te_IN.UTF-8', 'mr_IN.UTF-8', 'ta_IN.UTF-8', 'ur_IN.UTF-8', 'gu_IN.UTF-8', 'kn_IN.UTF-8', 'ml_IN.UTF-8', 'or_IN.UTF-8', 'pa_IN.UTF-8', 'as_IN.UTF-8', 'mai_IN.UTF-8', 'sat_IN.UTF-8', 'ks_IN.UTF-8', 'ks_IN.UTF-8@devanagari', 'kok_IN.UTF-8', 'sd_IN.UTF-8', 'sd_IN.UTF-8@devanagari', 'doi_IN.UTF-8', 'mni_IN.UTF-8', 'brx_IN.UTF-8', 'raj_IN.UTF-8', 'mjw_IN.UTF-8', 'anp_IN.UTF-8', 'bhb_IN.UTF-8', 'bho_IN.UTF-8', 'bo_IN.UTF-8', 'hne_IN.UTF-8', 'mag_IN.UTF-8', 'tcy_IN.UTF-8', 'ar_IN.UTF-8', 'gbm_IN.UTF-8']
746
754
  +: ['as_IN.UTF-8']
747
755
  as: ['in(eng)']
748
756
  IN: ['in(eng)', 'ara']
@@ -758,7 +766,7 @@ def dummy():
758
766
 
759
767
  >>> _test_language_territory(show_weights=False, languageId="bn", territoryId="IN") # doctest: +NORMALIZE_WHITESPACE
760
768
  bn: ['bn_BD.UTF-8', 'bn_IN.UTF-8']
761
- IN: ['hi_IN.UTF-8', 'en_IN.UTF-8', 'bn_IN.UTF-8', 'te_IN.UTF-8', 'mr_IN.UTF-8', 'ta_IN.UTF-8', 'ur_IN.UTF-8', 'gu_IN.UTF-8', 'kn_IN.UTF-8', 'ml_IN.UTF-8', 'or_IN.UTF-8', 'pa_IN.UTF-8', 'as_IN.UTF-8', 'mai_IN.UTF-8', 'sat_IN.UTF-8', 'ks_IN.UTF-8', 'ks_IN.UTF-8@devanagari', 'kok_IN.UTF-8', 'sd_IN.UTF-8', 'sd_IN.UTF-8@devanagari', 'doi_IN.UTF-8', 'mni_IN.UTF-8', 'brx_IN.UTF-8', 'raj_IN.UTF-8', 'mjw_IN.UTF-8', 'anp_IN.UTF-8', 'bhb_IN.UTF-8', 'bho_IN.UTF-8', 'bo_IN.UTF-8', 'hne_IN.UTF-8', 'mag_IN.UTF-8', 'tcy_IN.UTF-8', 'ar_IN.UTF-8']
769
+ IN: ['hi_IN.UTF-8', 'en_IN.UTF-8', 'bn_IN.UTF-8', 'te_IN.UTF-8', 'mr_IN.UTF-8', 'ta_IN.UTF-8', 'ur_IN.UTF-8', 'gu_IN.UTF-8', 'kn_IN.UTF-8', 'ml_IN.UTF-8', 'or_IN.UTF-8', 'pa_IN.UTF-8', 'as_IN.UTF-8', 'mai_IN.UTF-8', 'sat_IN.UTF-8', 'ks_IN.UTF-8', 'ks_IN.UTF-8@devanagari', 'kok_IN.UTF-8', 'sd_IN.UTF-8', 'sd_IN.UTF-8@devanagari', 'doi_IN.UTF-8', 'mni_IN.UTF-8', 'brx_IN.UTF-8', 'raj_IN.UTF-8', 'mjw_IN.UTF-8', 'anp_IN.UTF-8', 'bhb_IN.UTF-8', 'bho_IN.UTF-8', 'bo_IN.UTF-8', 'hne_IN.UTF-8', 'mag_IN.UTF-8', 'tcy_IN.UTF-8', 'ar_IN.UTF-8', 'gbm_IN.UTF-8']
762
770
  +: ['bn_IN.UTF-8']
763
771
  bn: ['in(eng)']
764
772
  IN: ['in(eng)', 'ara']
@@ -902,7 +910,7 @@ def dummy():
902
910
 
903
911
  >>> _test_language_territory(show_weights=False, languageId="tt", territoryId="RU") # doctest: +NORMALIZE_WHITESPACE
904
912
  tt: ['tt_RU.UTF-8', 'tt_RU.UTF-8@iqtelif']
905
- RU: ['ru_RU.UTF-8', 'ce_RU.UTF-8', 'cv_RU.UTF-8', 'mhr_RU.UTF-8', 'os_RU.UTF-8', 'tt_RU.UTF-8', 'tt_RU.UTF-8@iqtelif', 'sah_RU.UTF-8']
913
+ RU: ['ru_RU.UTF-8', 'ce_RU.UTF-8', 'cv_RU.UTF-8', 'mhr_RU.UTF-8', 'os_RU.UTF-8', 'tt_RU.UTF-8', 'tt_RU.UTF-8@iqtelif', 'sah_RU.UTF-8', 'kv_RU.UTF-8', 'crh_RU.UTF-8']
906
914
  +: ['tt_RU.UTF-8']
907
915
  tt: ['ru(tt)', 'us(altgr-intl)']
908
916
  RU: ['ru', 'ru(tt)', 'us(altgr-intl)']
@@ -910,7 +918,7 @@ def dummy():
910
918
 
911
919
  >>> _test_language_territory(show_weights=False, languageId="tt", scriptId="Latn", territoryId="RU") # doctest: +NORMALIZE_WHITESPACE
912
920
  tt: ['tt_RU.UTF-8', 'tt_RU.UTF-8@iqtelif']
913
- RU: ['ru_RU.UTF-8', 'ce_RU.UTF-8', 'cv_RU.UTF-8', 'mhr_RU.UTF-8', 'os_RU.UTF-8', 'tt_RU.UTF-8', 'tt_RU.UTF-8@iqtelif', 'sah_RU.UTF-8']
921
+ RU: ['ru_RU.UTF-8', 'ce_RU.UTF-8', 'cv_RU.UTF-8', 'mhr_RU.UTF-8', 'os_RU.UTF-8', 'tt_RU.UTF-8', 'tt_RU.UTF-8@iqtelif', 'sah_RU.UTF-8', 'kv_RU.UTF-8', 'crh_RU.UTF-8']
914
922
  +: ['tt_RU.UTF-8@iqtelif']
915
923
  tt: ['ru(tt)', 'us(altgr-intl)']
916
924
  RU: ['ru', 'ru(tt)', 'us(altgr-intl)']
@@ -2145,6 +2153,23 @@ def dummy():
2145
2153
  ['tw']
2146
2154
  >>> print(list_common_languages()) # doctest: +NORMALIZE_WHITESPACE
2147
2155
  ['ar', 'en', 'fr', 'de', 'ja', 'zh', 'ru', 'es']
2156
+
2157
+ >>> print(list_all_languages()) # doctest: +NORMALIZE_WHITESPACE
2158
+ ['aa', 'ab', 'af', 'agq', 'agr', 'ak', 'am', 'an', 'anp', 'ar', 'as', 'asa', 'ast', 'av', 'ay', 'ayc', 'ayr', 'az', 'ba', 'bas', 'be', 'bem', 'ber', 'bez', 'bg', 'bhb', 'bho', 'bi', 'bih', 'bin', 'bm', 'bn', 'bo', 'br', 'brx', 'bs', 'bua', 'byn', 'ca', 'ca_ES_VALENCIA', 'ccp', 'ce', 'cgg', 'ch', 'chm', 'chr', 'ckb', 'cmn', 'co', 'cop', 'crh', 'cs', 'csb', 'cu', 'cv', 'cy', 'da', 'dav', 'de', 'dje', 'doi', 'dsb', 'dua', 'dv', 'dyo', 'dz', 'ebu', 'ee', 'el', 'en', 'eo', 'es', 'et', 'eu', 'ewo', 'fa', 'fat', 'ff', 'fi', 'fil', 'fj', 'fo', 'fr', 'fur', 'fy', 'ga', 'gbm', 'gd', 'gez', 'gl', 'glk', 'gn', 'grc', 'gsw', 'gu', 'guz', 'gv', 'ha', 'hak', 'haw', 'he', 'hi', 'hif', 'hil', 'hne', 'ho', 'hr', 'hsb', 'ht', 'hu', 'hy', 'hz', 'ia', 'id', 'ie', 'ig', 'ii', 'ik', 'ilo', 'io', 'is', 'it', 'iu', 'iw', 'ja', 'jgo', 'jmc', 'jv', 'ka', 'kaa', 'kab', 'kam', 'kde', 'kea', 'kg', 'khb', 'khq', 'ki', 'kj', 'kk', 'kkj', 'kl', 'kln', 'km', 'kn', 'ko', 'kok', 'kr', 'ks', 'ks_Arab', 'ks_Deva', 'ksb', 'ksf', 'ksh', 'ku', 'kum', 'kv', 'kw', 'kwm', 'ky', 'la', 'lag', 'lah', 'lb', 'lez', 'lg', 'li', 'lij', 'lkt', 'ln', 'lo', 'lrc', 'lt', 'lu', 'luo', 'luy', 'lv', 'lzh', 'mag', 'mai', 'mas', 'mer', 'mfe', 'mg', 'mgh', 'mgo', 'mh', 'mhr', 'mi', 'miq', 'mjw', 'mk', 'ml', 'mn', 'mni', 'mnw', 'mo', 'mos', 'mr', 'ms', 'mt', 'mua', 'my', 'mzn', 'na', 'nan', 'naq', 'nb', 'nd', 'nds', 'ne', 'new', 'ng', 'nhn', 'niu', 'nl', 'nmg', 'nn', 'nnh', 'no', 'nqo', 'nr', 'nso', 'nus', 'nv', 'ny', 'nyn', 'oc', 'om', 'or', 'os', 'osa', 'ota', 'pa', 'pap', 'pl', 'prg', 'ps', 'pt', 'qu', 'quh', 'quz', 'raj', 'rif', 'rm', 'rn', 'ro', 'rof', 'ru', 'rw', 'rwk', 'sa', 'sah', 'saq', 'sat', 'sbp', 'sc', 'sco', 'sd', 'sd_Arab', 'sd_Deva', 'se', 'seh', 'sel', 'ses', 'sg', 'sgs', 'sh', 'shi', 'shn', 'shs', 'si', 'sid', 'sk', 'sl', 'sm', 'sma', 'smj', 'smn', 'sms', 'sn', 'so', 'sq', 'sr', 'sr_Cyrl', 'sr_Latn', 'ss', 'ssy', 'st', 'su', 'sv', 'sw', 'syc', 'syr', 'szl', 'ta', 'tcy', 'te', 'teo', 'tet', 'tg', 'th', 'the', 'ti', 'tig', 'tk', 'tl', 'tn', 'to', 'tok', 'tpi', 'tr', 'ts', 'tt', 'tt_Cyrl', 'tt_Latn', 'tw', 'twq', 'txg', 'ty', 'tyv', 'tzm', 'udm', 'ug', 'uk', 'unm', 'ur', 'uz', 'vai', 've', 'vi', 'vo', 'vot', 'vun', 'wa', 'wae', 'wal', 'wen', 'wo', 'wuu', 'xal', 'xh', 'xog', 'xzh', 'yap', 'yav', 'yi', 'yo', 'yue', 'yuw', 'za', 'zgh', 'zh', 'zh_Hans', 'zh_Hans_CN', 'zh_Hans_SG', 'zh_Hant', 'zh_Hant_HK', 'zh_Hant_MO', 'zh_Hant_TW', 'zu']
2159
+ >>> print(list_all_locales()) # doctest: +NORMALIZE_WHITESPACE
2160
+ ['aa_DJ.UTF-8', 'aa_ER.UTF-8', 'aa_ET.UTF-8', 'ab_GE.UTF-8', 'af_ZA.UTF-8', 'agr_PE.UTF-8', 'ak_GH.UTF-8', 'am_ET.UTF-8', 'an_ES.UTF-8', 'anp_IN.UTF-8', 'ar_AE.UTF-8', 'ar_BH.UTF-8', 'ar_DZ.UTF-8', 'ar_EG.UTF-8', 'ar_IN.UTF-8', 'ar_IQ.UTF-8', 'ar_JO.UTF-8', 'ar_KW.UTF-8', 'ar_LB.UTF-8', 'ar_LY.UTF-8', 'ar_MA.UTF-8', 'ar_OM.UTF-8', 'ar_QA.UTF-8', 'ar_SA.UTF-8', 'ar_SD.UTF-8', 'ar_SS.UTF-8', 'ar_SY.UTF-8', 'ar_TN.UTF-8', 'ar_YE.UTF-8', 'as_IN.UTF-8', 'ast_ES.UTF-8', 'ayc_PE.UTF-8', 'az_AZ.UTF-8', 'az_IR.UTF-8', 'be_BY.UTF-8', 'be_BY.UTF-8@latin', 'bem_ZM.UTF-8', 'ber_DZ.UTF-8', 'ber_MA.UTF-8', 'bg_BG.UTF-8', 'bhb_IN.UTF-8', 'bho_IN.UTF-8', 'bho_NP.UTF-8', 'bi_VU.UTF-8', 'bn_BD.UTF-8', 'bn_IN.UTF-8', 'bo_CN.UTF-8', 'bo_IN.UTF-8', 'br_FR.UTF-8', 'brx_IN.UTF-8', 'bs_BA.UTF-8', 'byn_ER.UTF-8', 'ca_AD.UTF-8', 'ca_ES.UTF-8', 'ca_ES.UTF-8@valencia', 'ca_FR.UTF-8', 'ca_IT.UTF-8', 'ce_RU.UTF-8', 'chr_US.UTF-8', 'ckb_IQ.UTF-8', 'cmn_TW.UTF-8', 'crh_RU.UTF-8', 'crh_UA.UTF-8', 'cs_CZ.UTF-8', 'csb_PL.UTF-8', 'cv_RU.UTF-8', 'cy_GB.UTF-8', 'da_DK.UTF-8', 'de_AT.UTF-8', 'de_BE.UTF-8', 'de_CH.UTF-8', 'de_DE.UTF-8', 'de_IT.UTF-8', 'de_LI.UTF-8', 'de_LU.UTF-8', 'doi_IN.UTF-8', 'dsb_DE.UTF-8', 'dv_MV.UTF-8', 'dz_BT.UTF-8', 'el_CY.UTF-8', 'el_GR.UTF-8', 'en_AG.UTF-8', 'en_AU.UTF-8', 'en_BW.UTF-8', 'en_CA.UTF-8', 'en_DK.UTF-8', 'en_GB.UTF-8', 'en_HK.UTF-8', 'en_IE.UTF-8', 'en_IL.UTF-8', 'en_IN.UTF-8', 'en_NG.UTF-8', 'en_NZ.UTF-8', 'en_PH.UTF-8', 'en_SC.UTF-8', 'en_SG.UTF-8', 'en_US.UTF-8', 'en_ZA.UTF-8', 'en_ZM.UTF-8', 'en_ZW.UTF-8', 'eo.UTF-8', 'es_AR.UTF-8', 'es_BO.UTF-8', 'es_CL.UTF-8', 'es_CO.UTF-8', 'es_CR.UTF-8', 'es_CU.UTF-8', 'es_DO.UTF-8', 'es_EC.UTF-8', 'es_ES.UTF-8', 'es_GT.UTF-8', 'es_HN.UTF-8', 'es_MX.UTF-8', 'es_NI.UTF-8', 'es_PA.UTF-8', 'es_PE.UTF-8', 'es_PR.UTF-8', 'es_PY.UTF-8', 'es_SV.UTF-8', 'es_US.UTF-8', 'es_UY.UTF-8', 'es_VE.UTF-8', 'et_EE.UTF-8', 'eu_ES.UTF-8', 'fa_IR.UTF-8', 'ff_SN.UTF-8', 'fi_FI.UTF-8', 'fil_PH.UTF-8', 'fo_FO.UTF-8', 'fr_BE.UTF-8', 'fr_CA.UTF-8', 'fr_CH.UTF-8', 'fr_FR.UTF-8', 'fr_HT.UTF-8', 'fr_LU.UTF-8', 'fur_IT.UTF-8', 'fy_DE.UTF-8', 'fy_NL.UTF-8', 'ga_IE.UTF-8', 'gbm_IN.UTF-8', 'gd_GB.UTF-8', 'gez_ER.UTF-8', 'gez_ER.UTF-8@abegede', 'gez_ET.UTF-8', 'gez_ET.UTF-8@abegede', 'gl_ES.UTF-8', 'glk_IR.UTF-8', 'gu_IN.UTF-8', 'gv_GB.UTF-8', 'ha_NG.UTF-8', 'hak_TW.UTF-8', 'he_IL.UTF-8', 'hi_IN.UTF-8', 'hif_FJ.UTF-8', 'hne_IN.UTF-8', 'hr_HR.UTF-8', 'hsb_DE.UTF-8', 'ht_HT.UTF-8', 'hu_HU.UTF-8', 'hy_AM.UTF-8', 'ia_FR.UTF-8', 'id_ID.UTF-8', 'ig_NG.UTF-8', 'ik_CA.UTF-8', 'ilo_PH.UTF-8', 'is_IS.UTF-8', 'it_CH.UTF-8', 'it_IT.UTF-8', 'iu_CA.UTF-8', 'iw_IL.UTF-8', 'ja_JP.UTF-8', 'ka_GE.UTF-8', 'kab_DZ.UTF-8', 'kk_KZ.UTF-8', 'kl_GL.UTF-8', 'km_KH.UTF-8', 'kn_IN.UTF-8', 'ko_KR.UTF-8', 'kok_IN.UTF-8', 'ks_IN.UTF-8', 'ks_IN.UTF-8@devanagari', 'ku_TR.UTF-8', 'kv_RU.UTF-8', 'kw_GB.UTF-8', 'ky_KG.UTF-8', 'lb_LU.UTF-8', 'lg_UG.UTF-8', 'li_BE.UTF-8', 'li_NL.UTF-8', 'lij_IT.UTF-8', 'ln_CD.UTF-8', 'lo_LA.UTF-8', 'lt_LT.UTF-8', 'lv_LV.UTF-8', 'lzh_TW.UTF-8', 'mag_IN.UTF-8', 'mai_IN.UTF-8', 'mai_NP.UTF-8', 'mfe_MU.UTF-8', 'mg_MG.UTF-8', 'mhr_RU.UTF-8', 'mi_NZ.UTF-8', 'miq_NI.UTF-8', 'mjw_IN.UTF-8', 'mk_MK.UTF-8', 'ml_IN.UTF-8', 'mn_MN.UTF-8', 'mni_IN.UTF-8', 'mnw_MM.UTF-8', 'mr_IN.UTF-8', 'ms_MY.UTF-8', 'mt_MT.UTF-8', 'my_MM.UTF-8', 'nan_TW.UTF-8', 'nan_TW.UTF-8@latin', 'nb_NO.UTF-8', 'nds_DE.UTF-8', 'nds_NL.UTF-8', 'ne_NP.UTF-8', 'nhn_MX.UTF-8', 'niu_NU.UTF-8', 'niu_NZ.UTF-8', 'nl_AW.UTF-8', 'nl_BE.UTF-8', 'nl_NL.UTF-8', 'nn_NO.UTF-8', 'no_NO.UTF-8', 'nr_ZA.UTF-8', 'nso_ZA.UTF-8', 'oc_FR.UTF-8', 'om_ET.UTF-8', 'om_KE.UTF-8', 'or_IN.UTF-8', 'os_RU.UTF-8', 'pa_IN.UTF-8', 'pa_PK.UTF-8', 'pap_AN.UTF-8', 'pap_AW.UTF-8', 'pap_CW.UTF-8', 'pl_PL.UTF-8', 'ps_AF.UTF-8', 'pt_BR.UTF-8', 'pt_PT.UTF-8', 'quz_PE.UTF-8', 'raj_IN.UTF-8', 'rif_MA.UTF-8', 'ro_RO.UTF-8', 'ru_RU.UTF-8', 'ru_UA.UTF-8', 'rw_RW.UTF-8', 'sa_IN.UTF-8', 'sah_RU.UTF-8', 'sat_IN.UTF-8', 'sc_IT.UTF-8', 'sd_IN.UTF-8', 'sd_IN.UTF-8@devanagari', 'se_NO.UTF-8', 'sgs_LT.UTF-8', 'shn_MM.UTF-8', 'shs_CA.UTF-8', 'si_LK.UTF-8', 'sid_ET.UTF-8', 'sk_SK.UTF-8', 'sl_SI.UTF-8', 'sm_WS.UTF-8', 'so_DJ.UTF-8', 'so_ET.UTF-8', 'so_KE.UTF-8', 'so_SO.UTF-8', 'sq_AL.UTF-8', 'sq_MK.UTF-8', 'sr_ME.UTF-8', 'sr_ME.UTF-8@latin', 'sr_RS.UTF-8', 'sr_RS.UTF-8@latin', 'ss_ZA.UTF-8', 'ssy_ER.UTF-8', 'st_ZA.UTF-8', 'sv_FI.UTF-8', 'sv_SE.UTF-8', 'sw_KE.UTF-8', 'sw_TZ.UTF-8', 'syr.UTF-8', 'szl_PL.UTF-8', 'ta_IN.UTF-8', 'ta_LK.UTF-8', 'ta_SG.UTF-8', 'tcy_IN.UTF-8', 'te_IN.UTF-8', 'tg_TJ.UTF-8', 'th_TH.UTF-8', 'the_NP.UTF-8', 'ti_ER.UTF-8', 'ti_ET.UTF-8', 'tig_ER.UTF-8', 'tk_TM.UTF-8', 'tl_PH.UTF-8', 'tn_BW.UTF-8', 'tn_ZA.UTF-8', 'to_TO.UTF-8', 'tok.UTF-8', 'tpi_PG.UTF-8', 'tr_CY.UTF-8', 'tr_TR.UTF-8', 'ts_ZA.UTF-8', 'tt_RU.UTF-8', 'tt_RU.UTF-8@iqtelif', 'ug_CN.UTF-8', 'uk_UA.UTF-8', 'unm_US.UTF-8', 'ur_IN.UTF-8', 'ur_PK.UTF-8', 'uz_UZ.UTF-8', 'uz_UZ.UTF-8@cyrillic', 've_ZA.UTF-8', 'vi_VN.UTF-8', 'wa_BE.UTF-8', 'wae_CH.UTF-8', 'wal_ET.UTF-8', 'wo_SN.UTF-8', 'xh_ZA.UTF-8', 'yi_US.UTF-8', 'yo_NG.UTF-8', 'yue_HK.UTF-8', 'yuw_PG.UTF-8', 'zh_CN.UTF-8', 'zh_HK.UTF-8', 'zh_MO.UTF-8', 'zh_SG.UTF-8', 'zh_TW.UTF-8', 'zu_ZA.UTF-8']
2161
+ >>> print(list_all_keyboards()) # doctest: +NORMALIZE_WHITESPACE
2162
+ ['ad', 'af', 'af(fa-olpc)', 'af(ps)', 'af(ps-olpc)', 'af(uz)', 'af(uz-olpc)', 'al', 'am', 'am(eastern)', 'am(eastern-alt)', 'am(phonetic)', 'am(phonetic-alt)', 'am(western)', 'ara', 'ara(azerty)', 'ara(azerty_digits)', 'ara(buckwalter)', 'ara(digits)', 'ara(qwerty)', 'ara(qwerty_digits)', 'at(nodeadkeys)', 'az', 'az(cyrillic)', 'ba', 'bd', 'bd(probhat)', 'be', 'be(oss)', 'bg', 'bg(bas_phonetic)', 'bg(phonetic)', 'br', 'brai', 'brai(left_hand)', 'brai(right_hand)', 'bt', 'by', 'by(legacy)', 'ca', 'ca(eng)', 'ca(ike)', 'ca(multi)', 'ca(multi-2gr)', 'ca(shs)', 'ch', 'ch(fr)', 'cn', 'cn(tib)', 'cn(tib_asciinum)', 'cn(ug)', 'cz', 'cz(ucw)', 'de', 'de(deadacute)', 'de(nodeadkeys)', 'de(ru)', 'dk', 'ee', 'es', 'es(ast)', 'es(cat)', 'et', 'fi', 'fi(classic)', 'fi(nodeadkeys)', 'fo', 'fr', 'fr(geo)', 'fr(latin9)', 'fr(oss)', 'gb', 'ge', 'ge(os)', 'gr', 'gr(extended)', 'gr(nodeadkeys)', 'gr(polytonic)', 'gr(simple)', 'hr', 'hu', 'ie', 'ie(CloGaelach)', 'ie(ogam)', 'il', 'il(biblical)', 'il(lyx)', 'il(phonetic)', 'in', 'in(ben)', 'in(ben_baishakhi)', 'in(ben_bornona)', 'in(ben_gitanjali)', 'in(ben_inscript)', 'in(ben_probhat)', 'in(bolnagri)', 'in(deva)', 'in(eng)', 'in(guj)', 'in(guru)', 'in(hin-kagapa)', 'in(hin-wx)', 'in(jhelum)', 'in(kan)', 'in(kan-kagapa)', 'in(mal)', 'in(mal_enhanced)', 'in(mal_lalitha)', 'in(mar-kagapa)', 'in(ori)', 'in(san-kagapa)', 'in(tam)', 'in(tam_tamilnet)', 'in(tam_tamilnet_TAB)', 'in(tam_tamilnet_TSCII)', 'in(tam_tamilnet_with_tam_nums)', 'in(tel)', 'in(tel-kagapa)', 'in(urd-phonetic)', 'in(urd-phonetic3)', 'in(urd-winkeys)', 'iq', 'ir', 'ir(pes_keypad)', 'it', 'jp', 'jp(kana)', 'jp(mac)', 'ke', 'kg', 'kg(phonetic)', 'kh', 'kr', 'kz', 'kz(kazrus)', 'kz(ruskaz)', 'la', 'la(stea)', 'latam', 'lk', 'lk(tam_TAB)', 'lk(tam_unicode)', 'lt', 'lv', 'ma', 'ma(french)', 'ma(tifinagh)', 'ma(tifinagh-alt)', 'ma(tifinagh-alt-phonetic)', 'ma(tifinagh-extended)', 'ma(tifinagh-extended-phonetic)', 'ma(tifinagh-phonetic)', 'me', 'me(cyrillic)', 'me(cyrillicalternatequotes)', 'me(cyrillicyz)', 'mk', 'mk(nodeadkeys)', 'mm', 'mn', 'mt', 'mt(us)', 'mv', 'ng', 'ng(hausa)', 'ng(igbo)', 'ng(yoruba)', 'nl', 'no', 'np', 'ph', 'ph(capewell-dvorak-bay)', 'ph(capewell-qwerf2k6-bay)', 'ph(colemak-bay)', 'ph(dvorak-bay)', 'ph(qwerty-bay)', 'pk', 'pk(ara)', 'pk(snd)', 'pk(urd-crulp)', 'pk(urd-nla)', 'pl', 'pl(ru_phonetic_dvorak)', 'pt', 'ro', 'rs', 'rs(alternatequotes)', 'rs(latin)', 'rs(rue)', 'rs(yz)', 'ru', 'ru(bak)', 'ru(chm)', 'ru(cv)', 'ru(dos)', 'ru(kom)', 'ru(legacy)', 'ru(mac)', 'ru(os_legacy)', 'ru(os_winkeys)', 'ru(phonetic)', 'ru(phonetic_winkeys)', 'ru(sah)', 'ru(srp)', 'ru(tt)', 'ru(typewriter)', 'ru(typewriter-legacy)', 'ru(udm)', 'ru(xal)', 'se', 'se(nodeadkeys)', 'se(rus)', 'se(rus_nodeadkeys)', 'se(swl)', 'si', 'sk', 'sn', 'sy', 'sy(syc)', 'sy(syc_phonetic)', 'th', 'th(pat)', 'th(tis)', 'tj', 'tj(legacy)', 'tm', 'tr', 'tr(crh)', 'tr(ku)', 'tz', 'ua', 'ua(homophonic)', 'ua(legacy)', 'ua(phonetic)', 'ua(rstu)', 'ua(rstu_ru)', 'ua(typewriter)', 'ua(winkeys)', 'us', 'us(altgr-intl)', 'us(chr)', 'us(euro)', 'us(intl)', 'us(rus)', 'uz', 'uz(latin)', 'vn', 'za']
2163
+ >>> print(list_all_territories()) # doctest: +NORMALIZE_WHITESPACE
2164
+ ['001', '002', '019', '142', '150', '419', 'AD', 'AE', 'AF', 'AG', 'AI', 'AL', 'AM', 'AN', 'AO', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AW', 'AX', 'AZ', 'BA', 'BB', 'BD', 'BE', 'BF', 'BG', 'BH', 'BI', 'BJ', 'BL', 'BM', 'BN', 'BO', 'BQ', 'BR', 'BS', 'BT', 'BW', 'BY', 'BZ', 'CA', 'CC', 'CD', 'CF', 'CG', 'CH', 'CI', 'CK', 'CL', 'CM', 'CN', 'CO', 'CR', 'CU', 'CV', 'CW', 'CX', 'CY', 'CZ', 'DE', 'DG', 'DJ', 'DK', 'DM', 'DO', 'DZ', 'EA', 'EC', 'EE', 'EG', 'EH', 'ER', 'ES', 'ET', 'EU', 'EZ', 'FI', 'FJ', 'FK', 'FM', 'FO', 'FR', 'GA', 'GB', 'GD', 'GE', 'GF', 'GG', 'GH', 'GI', 'GL', 'GM', 'GN', 'GP', 'GQ', 'GR', 'GT', 'GU', 'GW', 'GY', 'HK', 'HN', 'HR', 'HT', 'HU', 'IC', 'ID', 'IE', 'IL', 'IM', 'IN', 'IO', 'IQ', 'IR', 'IS', 'IT', 'JE', 'JM', 'JO', 'JP', 'KE', 'KG', 'KH', 'KI', 'KM', 'KN', 'KP', 'KR', 'KW', 'KY', 'KZ', 'LA', 'LB', 'LC', 'LI', 'LK', 'LR', 'LS', 'LT', 'LU', 'LV', 'LY', 'MA', 'MC', 'MD', 'ME', 'MF', 'MG', 'MH', 'MK', 'ML', 'MM', 'MN', 'MO', 'MP', 'MQ', 'MR', 'MS', 'MT', 'MU', 'MV', 'MW', 'MX', 'MY', 'MZ', 'NA', 'NC', 'NE', 'NF', 'NG', 'NI', 'NL', 'NO', 'NP', 'NR', 'NU', 'NZ', 'OM', 'PA', 'PE', 'PF', 'PG', 'PH', 'PK', 'PL', 'PM', 'PN', 'PR', 'PS', 'PT', 'PW', 'PY', 'QA', 'RE', 'RO', 'RS', 'RU', 'RW', 'SA', 'SB', 'SC', 'SD', 'SE', 'SG', 'SH', 'SI', 'SJ', 'SK', 'SL', 'SM', 'SN', 'SO', 'SR', 'SS', 'ST', 'SV', 'SX', 'SY', 'SZ', 'TC', 'TD', 'TG', 'TH', 'TJ', 'TK', 'TL', 'TM', 'TN', 'TO', 'TR', 'TT', 'TV', 'TW', 'TZ', 'UA', 'UG', 'UM', 'US', 'UY', 'UZ', 'VA', 'VC', 'VE', 'VG', 'VI', 'VN', 'VU', 'WF', 'WS', 'XK', 'YE', 'YT', 'YU', 'ZA', 'ZM', 'ZW']
2165
+ >>> print(list_all_timezones()) # doctest: +NORMALIZE_WHITESPACE
2166
+ ['Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', 'Africa/Asmara', 'Africa/Bamako', 'Africa/Bangui', 'Africa/Banjul', 'Africa/Bissau', 'Africa/Blantyre', 'Africa/Brazzaville', 'Africa/Bujumbura', 'Africa/Cairo', 'Africa/Casablanca', 'Africa/Ceuta', 'Africa/Conakry', 'Africa/Dakar', 'Africa/Dar_es_Salaam', 'Africa/Djibouti', 'Africa/Douala', 'Africa/El_Aaiun', 'Africa/Freetown', 'Africa/Gaborone', 'Africa/Harare', 'Africa/Johannesburg', 'Africa/Juba', 'Africa/Kampala', 'Africa/Khartoum', 'Africa/Kigali', 'Africa/Kinshasa', 'Africa/Lagos', 'Africa/Libreville', 'Africa/Lome', 'Africa/Luanda', 'Africa/Lubumbashi', 'Africa/Lusaka', 'Africa/Malabo', 'Africa/Maputo', 'Africa/Maseru', 'Africa/Mbabane', 'Africa/Mogadishu', 'Africa/Monrovia', 'Africa/Nairobi', 'Africa/Ndjamena', 'Africa/Niamey', 'Africa/Nouakchott', 'Africa/Ouagadougou', 'Africa/Porto-Novo', 'Africa/Sao_Tome', 'Africa/Tripoli', 'Africa/Tunis', 'Africa/Windhoek', 'America/Adak', 'America/Anchorage', 'America/Anguilla', 'America/Antigua', 'America/Araguaina', 'America/Argentina/Buenos_Aires', 'America/Argentina/Catamarca', 'America/Argentina/Cordoba', 'America/Argentina/Jujuy', 'America/Argentina/La_Rioja', 'America/Argentina/Mendoza', 'America/Argentina/Rio_Gallegos', 'America/Argentina/Salta', 'America/Argentina/San_Juan', 'America/Argentina/San_Luis', 'America/Argentina/Tucuman', 'America/Argentina/Ushuaia', 'America/Aruba', 'America/Asuncion', 'America/Atikokan', 'America/Bahia', 'America/Bahia_Banderas', 'America/Barbados', 'America/Belem', 'America/Belize', 'America/Blanc-Sablon', 'America/Boa_Vista', 'America/Bogota', 'America/Boise', 'America/Cambridge_Bay', 'America/Campo_Grande', 'America/Cancun', 'America/Caracas', 'America/Cayenne', 'America/Cayman', 'America/Chicago', 'America/Chihuahua', 'America/Costa_Rica', 'America/Creston', 'America/Cuiaba', 'America/Curacao', 'America/Danmarkshavn', 'America/Dawson', 'America/Dawson_Creek', 'America/Denver', 'America/Detroit', 'America/Dominica', 'America/Edmonton', 'America/Eirunepe', 'America/El_Salvador', 'America/Fortaleza', 'America/Galapagos', 'America/Glace_Bay', 'America/Godthab', 'America/Goose_Bay', 'America/Grand_Turk', 'America/Grenada', 'America/Guadeloupe', 'America/Guatemala', 'America/Guayaquil', 'America/Guyana', 'America/Halifax', 'America/Havana', 'America/Hermosillo', 'America/Indiana/Indianapolis', 'America/Indiana/Knox', 'America/Indiana/Marengo', 'America/Indiana/Petersburg', 'America/Indiana/Tell_City', 'America/Indiana/Vevay', 'America/Indiana/Vincennes', 'America/Indiana/Winamac', 'America/Inuvik', 'America/Iqaluit', 'America/Jamaica', 'America/Juneau', 'America/Kentucky/Louisville', 'America/Kentucky/Monticello', 'America/Kralendijk', 'America/La_Paz', 'America/Lima', 'America/Los_Angeles', 'America/Lower_Princes', 'America/Maceio', 'America/Managua', 'America/Manaus', 'America/Marigot', 'America/Martinique', 'America/Matamoros', 'America/Mazatlan', 'America/Menominee', 'America/Merida', 'America/Metlakatla', 'America/Mexico_City', 'America/Miquelon', 'America/Moncton', 'America/Monterrey', 'America/Montevideo', 'America/Montreal', 'America/Montserrat', 'America/Nassau', 'America/New_York', 'America/Nipigon', 'America/Nome', 'America/Noronha', 'America/North_Dakota/Beulah', 'America/North_Dakota/Center', 'America/North_Dakota/New_Salem', 'America/Ojinaga', 'America/Panama', 'America/Pangnirtung', 'America/Paramaribo', 'America/Phoenix', 'America/Port-au-Prince', 'America/Port_of_Spain', 'America/Porto_Velho', 'America/Puerto_Rico', 'America/Rainy_River', 'America/Rankin_Inlet', 'America/Recife', 'America/Regina', 'America/Resolute', 'America/Rio_Branco', 'America/Santa_Isabel', 'America/Santarem', 'America/Santiago', 'America/Santo_Domingo', 'America/Sao_Paulo', 'America/Scoresbysund', 'America/Shiprock', 'America/Sitka', 'America/St_Barthelemy', 'America/St_Johns', 'America/St_Kitts', 'America/St_Lucia', 'America/St_Thomas', 'America/St_Vincent', 'America/Swift_Current', 'America/Tegucigalpa', 'America/Thule', 'America/Thunder_Bay', 'America/Tijuana', 'America/Toronto', 'America/Tortola', 'America/Vancouver', 'America/Whitehorse', 'America/Winnipeg', 'America/Yakutat', 'America/Yellowknife', 'Arctic/Longyearbyen', 'Asia/Aden', 'Asia/Amman', 'Asia/Anadyr', 'Asia/Ashgabat', 'Asia/Baghdad', 'Asia/Bahrain', 'Asia/Baku', 'Asia/Bangkok', 'Asia/Beirut', 'Asia/Bishkek', 'Asia/Brunei', 'Asia/Choibalsan', 'Asia/Colombo', 'Asia/Damascus', 'Asia/Dhaka', 'Asia/Dili', 'Asia/Dubai', 'Asia/Dushanbe', 'Asia/Famagusta', 'Asia/Gaza', 'Asia/Ho_Chi_Minh', 'Asia/Hong_Kong', 'Asia/Hovd', 'Asia/Irkutsk', 'Asia/Jakarta', 'Asia/Jayapura', 'Asia/Jerusalem', 'Asia/Kabul', 'Asia/Kamchatka', 'Asia/Karachi', 'Asia/Kathmandu', 'Asia/Khandyga', 'Asia/Kolkata', 'Asia/Krasnoyarsk', 'Asia/Kuala_Lumpur', 'Asia/Kuching', 'Asia/Kuwait', 'Asia/Macau', 'Asia/Magadan', 'Asia/Manila', 'Asia/Muscat', 'Asia/Nicosia', 'Asia/Novokuznetsk', 'Asia/Novosibirsk', 'Asia/Omsk', 'Asia/Oral', 'Asia/Phnom_Penh', 'Asia/Pyongyang', 'Asia/Qatar', 'Asia/Rangoon', 'Asia/Riyadh', 'Asia/Sakhalin', 'Asia/Samarkand', 'Asia/Seoul', 'Asia/Shanghai', 'Asia/Singapore', 'Asia/Taipei', 'Asia/Tashkent', 'Asia/Tbilisi', 'Asia/Tehran', 'Asia/Thimphu', 'Asia/Tokyo', 'Asia/Ulaanbaatar', 'Asia/Ust-Nera', 'Asia/Vientiane', 'Asia/Vladivostok', 'Asia/Yakutsk', 'Asia/Yangon', 'Asia/Yekaterinburg', 'Asia/Yerevan', 'Atlantic/Azores', 'Atlantic/Bermuda', 'Atlantic/Canary', 'Atlantic/Cape_Verde', 'Atlantic/Faroe', 'Atlantic/Madeira', 'Atlantic/Reykjavik', 'Atlantic/St_Helena', 'Atlantic/Stanley', 'Australia/Adelaide', 'Australia/Brisbane', 'Australia/Broken_Hill', 'Australia/Currie', 'Australia/Darwin', 'Australia/Eucla', 'Australia/Hobart', 'Australia/Lindeman', 'Australia/Lord_Howe', 'Australia/Melbourne', 'Australia/Perth', 'Australia/Sydney', 'Europe/Amsterdam', 'Europe/Andorra', 'Europe/Athens', 'Europe/Belgrade', 'Europe/Berlin', 'Europe/Bratislava', 'Europe/Brussels', 'Europe/Bucharest', 'Europe/Budapest', 'Europe/Busingen', 'Europe/Chisinau', 'Europe/Copenhagen', 'Europe/Dublin', 'Europe/Gibraltar', 'Europe/Guernsey', 'Europe/Helsinki', 'Europe/Isle_of_Man', 'Europe/Istanbul', 'Europe/Jersey', 'Europe/Kaliningrad', 'Europe/Kiev', 'Europe/Lisbon', 'Europe/Ljubljana', 'Europe/London', 'Europe/Luxembourg', 'Europe/Madrid', 'Europe/Malta', 'Europe/Mariehamn', 'Europe/Minsk', 'Europe/Monaco', 'Europe/Moscow', 'Europe/Oslo', 'Europe/Paris', 'Europe/Podgorica', 'Europe/Prague', 'Europe/Riga', 'Europe/Rome', 'Europe/Samara', 'Europe/San_Marino', 'Europe/Sarajevo', 'Europe/Simferopol', 'Europe/Skopje', 'Europe/Sofia', 'Europe/Stockholm', 'Europe/Tallinn', 'Europe/Tirane', 'Europe/Uzhgorod', 'Europe/Vaduz', 'Europe/Vatican', 'Europe/Vienna', 'Europe/Vilnius', 'Europe/Volgograd', 'Europe/Warsaw', 'Europe/Zagreb', 'Europe/Zaporozhye', 'Europe/Zurich', 'Indian/Antananarivo', 'Indian/Chagos', 'Indian/Christmas', 'Indian/Cocos', 'Indian/Comoro', 'Indian/Mahe', 'Indian/Maldives', 'Indian/Mauritius', 'Indian/Mayotte', 'Indian/Reunion', 'Pacific/Apia', 'Pacific/Auckland', 'Pacific/Chatham', 'Pacific/Chuuk', 'Pacific/Easter', 'Pacific/Efate', 'Pacific/Fakaofo', 'Pacific/Fiji', 'Pacific/Funafuti', 'Pacific/Guadalcanal', 'Pacific/Guam', 'Pacific/Honolulu', 'Pacific/Kiritimati', 'Pacific/Kwajalein', 'Pacific/Majuro', 'Pacific/Midway', 'Pacific/Nauru', 'Pacific/Niue', 'Pacific/Norfolk', 'Pacific/Noumea', 'Pacific/Pago_Pago', 'Pacific/Palau', 'Pacific/Pitcairn', 'Pacific/Port_Moresby', 'Pacific/Rarotonga', 'Pacific/Saipan', 'Pacific/Tahiti', 'Pacific/Tongatapu', 'Pacific/Wake', 'Pacific/Wallis', 'US/Pacific']
2167
+ >>> print(list_all_scripts()) # doctest: +NORMALIZE_WHITESPACE
2168
+ ['Adlm', 'Arab', 'Armn', 'Beng', 'Bhks', 'Cakm', 'Cans', 'Cher', 'Copt', 'Cprt', 'Cyrl', 'Cyrs', 'Deva', 'Elba', 'Ethi', 'Geor', 'Glag', 'Gran', 'Grek', 'Gujr', 'Guru', 'Hang', 'Hani', 'Hans', 'Hant', 'Hebr', 'Hira', 'Hung', 'Java', 'Jpan', 'Kana', 'Khmr', 'Knda', 'Kore', 'Lana', 'Laoo', 'Latin', 'Latn', 'Linb', 'Mahj', 'Marc', 'Mlym', 'Modi', 'Mong', 'Mtei', 'Mymr', 'Newa', 'Nkoo', 'Olck', 'Orya', 'Osge', 'Osma', 'Perm', 'Phag', 'Shrd', 'Sidd', 'Sinh', 'Sund', 'Syrc', 'Takr', 'Talu', 'Taml', 'Tang', 'Telu', 'Tfng', 'Tglg', 'Thaa', 'Thai', 'Tibt', 'Tirh', 'Vaii', 'Yiii']
2169
+ >>> print(list_all_input_methods()) # doctest: +NORMALIZE_WHITESPACE
2170
+ ['ibus/anthy', 'ibus/chewing', 'ibus/hangul', 'ibus/kkc', 'ibus/libpinyin', 'ibus/libzhuyin', 'ibus/m17n:ar:kbd', 'ibus/m17n:as:inscript2', 'ibus/m17n:bn:inscript2', 'ibus/m17n:brx:inscript2-deva', 'ibus/m17n:doi:inscript2-deva', 'ibus/m17n:gu:inscript2', 'ibus/m17n:hi:inscript2', 'ibus/m17n:kn:inscript2', 'ibus/m17n:kok:inscript2-deva', 'ibus/m17n:ks:inscript2-deva', 'ibus/m17n:ks:kbd', 'ibus/m17n:mai:inscript2', 'ibus/m17n:ml:inscript2', 'ibus/m17n:mni:inscript2-beng', 'ibus/m17n:mr:inscript2', 'ibus/m17n:ne:inscript2-deva', 'ibus/m17n:or:inscript2', 'ibus/m17n:pa:inscript2-guru', 'ibus/m17n:sa:inscript2', 'ibus/m17n:sat:inscript2-deva', 'ibus/m17n:sd:inscript2-deva', 'ibus/m17n:ta:inscript2', 'ibus/m17n:te:inscript2', 'ibus/m17n:ur:phonetic', 'ibus/m17n:vi:telex', 'ibus/table:cangjie5']
2171
+ >>> print(list_all_console_fonts()) # doctest: +NORMALIZE_WHITESPACE
2172
+ ['LatGrkCyr-8x16', 'eurlatgr', 'iso07u-16', 'latarcyrheb-sun16']
2148
2173
  '''
2149
2174
 
2150
2175
 
@@ -38,7 +38,7 @@ echo "----------------------------------------------------------------------"
38
38
  echo "Locales which are in langtable but missing in glibc:"
39
39
  MISSING_LOCALES_IN_GLIBC=
40
40
  MISSING_LOCALES_IN_GLIBC_COUNT=0
41
- for i in $(grep "<localeId>.*</localeId>" *.xml | perl -pe 's/.*<localeId>(([a-z]{2,3}_|eo).*)<\/localeId>.*/\1/g')
41
+ for i in $(grep "<localeId>.*</localeId>" *.xml | perl -pe 's/.*<localeId>(([a-z]{2,3}_|eo|syr).*)<\/localeId>.*/\1/g')
42
42
  do
43
43
  LC_ALL=$i locale charmap 2>&1 | grep -q UTF-8
44
44
  if [ $? -eq 1 ]; then
File without changes
File without changes
File without changes
File without changes