]>
git.ipfire.org Git - people/shoehn/ipfire.org.git/blob - www/pages/translate/__init__.py
7 from web
.javascript
import Javascript
15 "da" : "Dansk (Dansk)",
16 "de" : "Deutsch (German)",
17 "fr" : "Français (French)",
20 def __init__(self
, path
):
23 p
= os
.popen("msgfmt -v --statistics %s 2>&1" % self
.path
)
24 self
.line
= p
.readlines()[0]
26 def __cmp__(self
, other
):
27 return cmp(self
.lang
, other
.lang
)
31 return os
.path
.basename(self
.path
)[:-3]
35 return self
.code2lang
.get(self
.code
, "Unknown (%s)" % self
.code
)
39 return int(self
.line
.split()[0])
42 def untranslated(self
):
58 class Project(object):
59 def __init__(self
, id, path
, **kwargs
):
62 self
._name
= kwargs
.pop("name")
63 self
.desc
= kwargs
.pop("desc")
65 self
._translations
= []
76 def translations(self
):
77 if not self
._translations
:
78 for path
in os
.listdir(self
.path
):
79 if path
.endswith(".po"):
80 self
._translations
.append(Po(os
.path
.join(self
.path
, path
)))
81 return self
._translations
84 for path
in os
.listdir(self
.path
):
85 if path
.endswith(".pot"):
86 self
.pot
= Po(os
.path
.join(self
.path
, path
))
90 projects
.append(Project("pomona", BASE
+ "/ipfire-3.x/src/pomona/po", name
="Pomona", desc
="The pomona installer for ipfire."))
92 class Content(web
.Content
):
94 web
.Content
.__init
__(self
)
95 self
.projects
= projects
97 def __call__(self
, lang
):
98 ret
= """<h3>IPFire Translation Status</h3>
99 <div id="tabs"><ul>"""
101 for project
in self
.projects
:
102 ret
+= """<li><a href="#%s">%s</a></li>""" % (project
.id, project
.name
)
106 for project
in self
.projects
:
107 ret
+= """<div id="%s">
108 <p><strong>Description:</strong> %s</p>
110 <table class="translate">
114 <th>Untranslated</th>
117 </tr>""" % (project
.id, project
.desc
)
121 total
= project
.pot
.untranslated
123 for t
in sorted(project
.translations
):
125 percent
= "%3.1f%%" % (t
.translated
* 100 / total
)
131 <td class="lang"><img src="/images/flags/%s.png" alt="%s" />%s</td>
137 (t
.code
, t
.code
, t
.lang
, t
.translated
, t
.untranslated
, t
.fuzzy
, percent
)
145 <strong>Template</strong> - %s strings
146 </p>""" % project
.pot
.untranslated
154 page
.content
= Content()
155 page
.sidebar
= web
.elements
.DevelopmentSidebar()
156 page
.javascript
= Javascript(1, 1)
157 page
.javascript
.write("""
158 <script type="text/javascript">