Blob Blame History Raw
diff -urN yum-langpacks-0.4.2.old/langpacks.py yum-langpacks-0.4.2/langpacks.py
--- yum-langpacks-0.4.2.old/langpacks.py	2013-10-08 14:22:25.000000000 +0530
+++ yum-langpacks-0.4.2/langpacks.py	2013-11-15 14:13:33.966937576 +0530
@@ -56,7 +56,7 @@
 
 langs = []
 langinstalled = []
-
+whitelisted_locales = ['en_AU', 'en_CA', 'en_GB', 'pt_BR', 'pt_PT', 'zh_CN', 'zh_TW']
 conditional_pkgs = {}
 
 def _setup_conditional_pkgs(repos):
@@ -127,7 +127,7 @@
 		      if lname not in skip_pkg_list:
 		           langlist.append(lname)
 
-    return langlist
+    return (seen, langlist)
 
 def lc_to_langname(lc):
     return langtable.language_name(languageId=lc, languageIdQuery="en").encode("UTF-8")
@@ -297,6 +297,35 @@
           uniq_list.append(wover)
    return sorted(uniq_list)
 
+def get_matches_from_repo(langpack_pkgs, lang):
+    avl_langpack_pkgs = []
+    #Check if lang is empty, case like input mara, marat
+    if len(lang) == 0:
+        return avl_langpack_pkgs
+    lname = lc_to_langname(lang)
+    lang = "-" + lang
+    for pkgs in langpack_pkgs:
+        if len(lang) < 5 and lang.find("_") == -1:
+            if pkgs.find(lang, len(pkgs)-len(lang), len(pkgs)) > 0 :
+                avl_langpack_pkgs.append(pkgs)
+            if lname:
+                if pkgs.find(lname, len(pkgs)-len(lname), len(pkgs)) > 0 :
+                    avl_langpack_pkgs.append(pkgs)
+        if len(lang) > 4 and lang.find("_") != -1:
+            mainlang = lang[0:lang.find("_")]
+            if pkgs.find(lang, len(pkgs)-len(lang), len(pkgs)) > 0 :
+                avl_langpack_pkgs.append(pkgs)
+           # if input pt_BR then show for pt and pt_BR
+            # if input zh_CN then show for zh and zh_CN
+            elif pkgs.find(mainlang, len(pkgs)-len(mainlang), len(pkgs)) > 0 :
+                avl_langpack_pkgs.append(pkgs)
+
+            if lname:
+                if pkgs.find(lname, len(pkgs)-len(lname), len(pkgs)) > 0 :
+                    avl_langpack_pkgs.append(pkgs)
+
+    return sorted(avl_langpack_pkgs)
+
 def get_matches_from_ts(lang, base = None):
     yb = base
     sack = base.pkgSack
@@ -574,13 +603,27 @@
     def doCommand(self, base, basecmd, extcmds):
         base.repos.doSetup()
         _setup_conditional_pkgs(base.repos.listEnabled())
+        (langpack_pkgs, ra_list) = read_available_langpacks(base)
+
         for lang in extcmds:
-	    print "Language-Id={0}".format(lang)
-	    if len(lang) > 3 and lang.find("_") == -1:
-                list_pkgs = get_matches_from_ts(langname_to_lc(lang), base)
+            print "Language-Id={0}".format(lang)
+            if len(lang) == 1:
+                print "Not a valid input"
+                return 0, [""]
+            # Case to handle input like zh_CN, pt_BR
+            elif lang in whitelisted_locales and len(lang) > 3 and lang.find("_") != -1:
+                list_pkgs = get_matches_from_repo(langpack_pkgs, lang)
+            # Case for full language name input like Japanese
+            elif len(lang) > 3 and lang.find("_") == -1:
+                list_pkgs = get_matches_from_repo(langpack_pkgs, langname_to_lc(lang))
+            # General case to handle input like ja, ru, fr, it
             else:
-	        list_pkgs = get_matches_from_ts(lang, base)
-	    for pkg in set(list_pkgs):
+                if lang.find("_") == -1:
+                     list_pkgs = get_matches_from_repo(langpack_pkgs, lang)
+                # Case to not process mr_IN or mai_IN locales
+                else:
+                     list_pkgs = []
+            for pkg in list_pkgs:
 		print "  " + pkg
 	    if len(list_pkgs) == 0:
                  print "No langpacks to show for languages: {0}".format(lang)
@@ -603,8 +646,8 @@
         base.repos.doSetup()
         _setup_conditional_pkgs(base.repos.listEnabled())
 
-        list = read_available_langpacks(base)
-        langlist = get_unique_language_names(list)
+        (language_packs, ra_list) = read_available_langpacks(base)
+        langlist = get_unique_language_names(ra_list)
 
         if not extcmds:
             print "Displaying all available language:-"