3 import os, os.path, re, sys, locale
44 def find_encoding(lang):
45 r = re.match("^([^.]+)(\.[^@]+)?$", lang)
46 pure_lang = r.group(1)
47 if r.group(2) == None:
55 return (enc, pure_lang)
57 def parse_spec(infile, outfile):
58 re_summary = re.compile("^Summary\(([^\)]+)\):\t+(.*)$")
59 re_utf = re.compile("^utf-8$", re.I)
60 re_desc = re.compile("^(%description.*\s)-l\s+([\S]+)($|\s.*$)")
61 re_proc = re.compile("^%")
66 r = re_summary.match(l)
68 (enc, pure_lang) = find_encoding(r.group(1))
70 outfile.write("#unknow lang code Summary(%s)\n" % (lang))
71 elif not re_utf.search(enc):
73 desc = unicode(r.group(2), enc).encode("UTF-8")
74 l = "Summary(%s.UTF-8): %s\n" % (pure_lang, desc)
75 except UnicodeDecodeError:
76 outfile.write("#transcoding error Summary(%s)\n" % (lang))
81 if not re_utf.search(enc):
83 l = unicode(l, enc).encode("UTF-8")
84 except UnicodeDecodeError:
85 outfile.write("#transcoding error %%description -l %s\n" % (lang))
89 (enc, pure_lang) = find_encoding(r.group(2))
91 outfile.write("#unknown lang code in %%description -l %s\n" % (lang))
92 elif not re_utf.search(enc):
94 l = "%s-l %s.UTF-8%s\n" % (r.group(1), pure_lang, r.group(3))
99 parse_spec(sys.stdin, sys.stdout)
101 if __name__ == "__main__":