mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Compile the website translations
This commit is contained in:
parent
de640e338c
commit
d554fbeb81
@ -276,6 +276,7 @@ class Translations(POT): # {{{
|
|||||||
self.compile_content_server_translations()
|
self.compile_content_server_translations()
|
||||||
self.freeze_locales()
|
self.freeze_locales()
|
||||||
self.compile_user_manual_translations()
|
self.compile_user_manual_translations()
|
||||||
|
self.compile_website_translations()
|
||||||
|
|
||||||
def compile_group(self, files, handle_stats=None, file_ok=None, action_per_file=None):
|
def compile_group(self, files, handle_stats=None, file_ok=None, action_per_file=None):
|
||||||
from calibre.constants import islinux
|
from calibre.constants import islinux
|
||||||
@ -450,6 +451,44 @@ class Translations(POT): # {{{
|
|||||||
def stats(self):
|
def stats(self):
|
||||||
return self.j(self.d(self.DEST), 'stats.pickle')
|
return self.j(self.d(self.DEST), 'stats.pickle')
|
||||||
|
|
||||||
|
def compile_website_translations(self):
|
||||||
|
from calibre.utils.zipfile import ZipFile, ZipInfo, ZIP_STORED
|
||||||
|
from calibre.ptempfile import TemporaryDirectory
|
||||||
|
self.info('Compiling website translations...')
|
||||||
|
srcbase = self.j(self.d(self.SRC), 'translations', 'website')
|
||||||
|
fmap = {}
|
||||||
|
files = []
|
||||||
|
stats = {}
|
||||||
|
done = []
|
||||||
|
|
||||||
|
def handle_stats(src, nums):
|
||||||
|
locale = fmap[src]
|
||||||
|
trans = nums[0]
|
||||||
|
total = trans if len(nums) == 1 else (trans + nums[1])
|
||||||
|
stats[locale] = int(round(100 * trans / total))
|
||||||
|
|
||||||
|
with TemporaryDirectory() as tdir, ZipFile(self.j(srcbase, 'locales.zip'), 'w', ZIP_STORED) as zf:
|
||||||
|
for f in os.listdir(srcbase):
|
||||||
|
if f.endswith('.po'):
|
||||||
|
l = f.partition('.')[0]
|
||||||
|
d = os.path.join(tdir, l + '.mo')
|
||||||
|
f = os.path.join(srcbase, f)
|
||||||
|
fmap[f] = l
|
||||||
|
files.append((f, d))
|
||||||
|
self.compile_group(files, handle_stats=handle_stats)
|
||||||
|
|
||||||
|
for locale, translated in stats.iteritems():
|
||||||
|
if translated > 30:
|
||||||
|
with open(os.path.join(tdir, locale + '.mo'), 'rb') as f:
|
||||||
|
raw = f.read()
|
||||||
|
zi = ZipInfo(os.path.basename(f.name))
|
||||||
|
zi.compress_type = ZIP_STORED
|
||||||
|
zf.writestr(zi, raw)
|
||||||
|
done.append(locale)
|
||||||
|
dest = self.j(self.d(self.stats), 'website-languages.txt')
|
||||||
|
with open(dest, 'wb') as f:
|
||||||
|
f.write(' '.join(sorted(done)))
|
||||||
|
|
||||||
def compile_user_manual_translations(self):
|
def compile_user_manual_translations(self):
|
||||||
self.info('Compiling user manual translations...')
|
self.info('Compiling user manual translations...')
|
||||||
srcbase = self.j(self.d(self.SRC), 'translations', 'manual')
|
srcbase = self.j(self.d(self.SRC), 'translations', 'manual')
|
||||||
|
Loading…
x
Reference in New Issue
Block a user