]> git.pld-linux.org Git - packages/rpm-build-tools.git/blame - spec_utf8
- KOI8_R for ru
[packages/rpm-build-tools.git] / spec_utf8
CommitLineData
11774a5d
AF
1#!/usr/bin/python
2
3import os, os.path, re, sys, locale
4
5langs={
6 'bg':'windows-1251',
7 'br':'iso8859-1',
8 'ca':'iso8859-1',
9 'cs':'iso8859-2',
10 'da':'iso8859-1',
11 'de':'iso8859-1',
12 'en':'iso8859-1',
13 'eo':'iso8859-3',
14 'es':'iso8859-1',
15 'fi':'iso8859-1',
16 'fo':'iso8859-1',
17 'fr':'iso8859-1',
18 'gl':'iso8859-1',
19 'he':'iso8859-8',
20 'id':'iso8859-1',
21 'is':'iso8859-1',
22 'it':'iso8859-1',
23 'ja':'euc-jp',
24 'ko':'euc-kr',
25 'nb':'iso8859-1',
26 'nl':'iso8859-1',
27 'pl':'iso8859-2',
28 'pt':'iso8859-1',
29 'pt_BR':'iso8859-1',
30 'ro':'iso8859-2',
e4fe63e5 31 'ru':'KOI8-R',
11774a5d
AF
32 'se':'UTF-8',
33 'sk':'iso8859-2',
34 'sl':'iso8859-2',
35 'sv':'iso8859-1',
36 'tr':'iso8859-9',
37 'uk':'KOI8-U',
38 'wa':'iso8859-1',
39 'zh_CN':'GB2312',
40 'zh_HK':'BIG5-HKSCS',
41 'zh_TW':'BIG5',
42 0:0}
43
44def parse_spec(infile, outfile):
45 re_summary = re.compile("^Summary\(([^\)]+)\):\t+(.*)$")
46 re_utf = re.compile(".utf-8$", re.I)
47 re_desc = re.compile("^(%description.*\s)-l\s+([\S]+)($|\s.*$)")
48 re_proc = re.compile("^%")
49 in_desc = False
50
51 for l in infile:
52 outline = l
53 r = re_summary.match(l)
54 if r:
55 lang = r.group(1)
56 if re_utf.search(lang):
57 outfile.write(l)
58 continue
59 if lang in langs.keys():
60 try:
61 desc = unicode(r.group(2), langs[lang]).encode("UTF-8")
62 l = "Summary(%s.UTF-8): %s\n" % (lang, desc)
63 except UnicodeDecodeError:
64 outfile.write("#transcoding error Summary(%s)\n" % (lang))
65 else:
66 outfile.write("#unknow lang code Summary(%s)\n" % (lang))
67 if in_desc:
68 if re_proc.search(l):
69 in_desc = False
70 else:
71 if not langs[lang] == 'UTF-8':
72 try:
73 l = unicode(l, langs[lang]).encode("UTF-8")
74 except UnicodeDecodeError:
75 outfile.write("#transcoding error %%description -l %s\n" % (lang))
76
77 r = re_desc.match(l)
78 if r:
79 lang = r.group(2)
80 if re_utf.search(lang):
81 outfile.write(l)
82 continue
83 in_desc = True
84 if not lang in langs.keys():
85 outfile.write("#unknow lang code in %%description -l %s\n" % (lang))
86 else:
87 l = "%s-l %s.UTF-8%s\n" % (r.group(1), lang, r.group(3))
88
89 outfile.write(l)
90
91
92
93def main():
94 parse_spec(sys.stdin, sys.stdout)
95
96if __name__ == "__main__":
97 main()
98
This page took 0.076643 seconds and 4 git commands to generate.