[PATCH] Try fallback if none exactly matching language is found (#891487)

Martin Sivak msivak at redhat.com
Fri Jan 4 11:29:18 UTC 2013


I hate it when we have to do hacks like this, but ack.

Martin

----- Original Message -----
> 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 at 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
> 
> _______________________________________________
> anaconda-patches mailing list
> anaconda-patches at lists.fedorahosted.org
> https://lists.fedorahosted.org/mailman/listinfo/anaconda-patches
> 


More information about the anaconda-patches mailing list