Package: obmenu
Version: 1.0-2
Followup-For: Bug #655363

The problem is in the language-matching code.  It chooses
"ca@valencia" when the language is "en" because "en" occurs as a
substring.

I'm attaching a patch which addresses this.  It also eliminates a lot
of duplication by treating parseDirectoryFile as a special case of
parseDesktopFile.
--- /usr/bin/obm-xdg.old	2011-05-01 18:34:12.000000000 -0400
+++ /usr/bin/obm-xdg	2012-01-10 14:40:48.000000000 -0500
@@ -184,42 +184,7 @@
 		self.parseXml(dom.documentElement)
 	
 	def parseDirectoryFile(self, filename, language):
-		title = ""
-		accuracy = 0
-		
-		if language:
-			l = language.split(".")[0].split("_")
-			if len(l) == 2:
-				lang_major = l[0]
-				lang_minor = l[1]
-			else:
-				lang_major = l[0]
-				lang_minor = None
-		else:
-			lang_major = "en"
-			lang_minor = None
-
-		for line in open(filename):
-			i = line.split("=")[0].lower()
-			n = line.find("=")
-			if i[0:4] == "name":
-				name = line[n+1:]
-				if "[" in line[:n]:
-					lang = line[:n].split("[")[1].split("]")[0]
-				else:
-					lang = None
-
-				if lang:
-					if lang_major in lang and (title == "" or accuracy < 2):
-						title = name
-						accuracy = 2
-					if lang_minor and lang_major in lang and lang_minor in lang:
-						title = name
-						accuracy = 3
-				elif title == "":
-						accuracy = 1
-						title = name
-		return unicode(title.strip() ,"utf-8")
+		return self.parseDesktopFile(filename, language)["name"]
 	
 	def parseDesktopFile(self, filename, language):
 		title = ""
@@ -250,10 +215,10 @@
 					lang = None
 
 				if lang:
-					if lang_major in lang and (title == "" or accuracy < 2):
+					if lang.startswith(lang_major + '_') and (title == "" or accuracy < 2):
 						title = name
 						accuracy = 2
-					if lang_minor and lang_major in lang and lang_minor in lang:
+					if lang_minor and lang_major + '_' + lang_minor == lang:
 						title = name
 						accuracy = 3
 				elif title == "":

Reply via email to