diff --git a/src/xdgmenumaker b/src/xdgmenumaker index a11af78..5e55378 100755 --- a/src/xdgmenumaker +++ b/src/xdgmenumaker @@ -6,6 +6,7 @@ import os import sys import getopt import fnmatch +import locale import xdg.DesktopEntry as dentry import xdg.Exceptions as exc import xdg.BaseDirectory as bd @@ -431,7 +432,10 @@ def sortedcategories(applist): categories = [] for e in applist: categories.append(e.category) - categories = sorted(set(categories)) + categories = sorted( + set(categories), + key=lambda category: locale.strxfrm(category.decode()) + ) return categories @@ -485,7 +489,13 @@ def menu(ico_paths=True): except exc.ParsingError: pass - sortedapplist = sorted(applist, key=attrgetter('category', 'app.name')) + sortedapplist = sorted( + applist, + key=lambda entry: ( + locale.strxfrm(entry.category.decode()), + locale.strxfrm(entry.app.name.decode()), + ) + ) menu = [] for c in sortedcategories(applist): @@ -925,4 +935,5 @@ def openbox(): if __name__ == "__main__": + locale.setlocale(locale.LC_COLLATE, '') main(sys.argv[1:])