From the language selection we get e.g. "Greek" as a
language name. But
while iterating over all languages libxklavier knows we get
"Greek, Modern
(1453-)" which is not an exact match. If exact match is not found we should
try to find language starting with the string we got from the language
selection.
Signed-off-by: Vratislav Podzimek <vpodzime(a)redhat.com>
---
pyanaconda/keyboard.py | 29 +++++++++++++++++++++++------
1 file changed, 23 insertions(+), 6 deletions(-)
diff --git a/pyanaconda/keyboard.py b/pyanaconda/keyboard.py
index d6c8f5c..e865f08 100755
--- a/pyanaconda/keyboard.py
+++ b/pyanaconda/keyboard.py
@@ -440,15 +440,32 @@ class XklWrapper(object):
return self._switching_options
def get_default_language_layout(self, language):
- """Get the default layout for a given language"""
+ """Get the default layout for a given language."""
+
+ layouts = self.get_language_layouts(language)
+ if layouts:
+ #first layout (should exist for every language)
+ return layouts[0].name
+ else:
+ return None
+
+ def get_language_layouts(self, language):
+ """Get layouts for a given language."""
language_layouts = self._language_keyboard_variants.get(language, None)
- if not language_layouts:
- return None
+ if language_layouts:
+ return language_layouts
- #first layout (should exist for every language)
- return language_layouts[0].name
+ #else try some magic and if everything fails, return None
+ for (lang, layouts) in self._language_keyboard_variants.iteritems():
+ #XXX: some languages are returned in a weird form from the
+ # libxklavier iterations (e.g. "Greek, Modern (1453-)")
+ if lang.startswith(language):
+ #first layout (should exist for every language)
+ return layouts
+
+ return None
def get_default_lang_country_layout(self, language, country):
"""
@@ -457,7 +474,7 @@ class XklWrapper(object):
"""
- language_layouts = self._language_keyboard_variants.get(language, None)
+ language_layouts = self.get_language_layouts(language)
country_layouts = self._country_keyboard_variants.get(country, None)
if not language_layouts:
return None
--
1.7.11.7