mirror of
https://git.lyx.org/repos/lyx.git
synced 2025-01-10 18:58:10 +00:00
Scons: update_po target part two: qt4_l10n and layouts_l10n
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@17501 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
dc59f0a1c2
commit
8ab80df229
@ -2019,8 +2019,14 @@ if update_po:
|
||||
env.msgmerge(f, '$BUILDDIR/common/lyx.pot')
|
||||
# build language_l10n.pot
|
||||
env['BUILDERS']['language_l10n'] = Builder(action=utils.env_language_l10n)
|
||||
tar = env.language_l10n('$BUILDDIR/common/language_l10n.pot', '$TOP_SRCDIR/lib/languages')
|
||||
Alias('update_po', tar)
|
||||
tar1 = env.language_l10n('$BUILDDIR/common/language_l10n.pot', '$TOP_SRCDIR/lib/languages')
|
||||
env['BUILDERS']['qt4_l10n'] = Builder(action=utils.env_qt4_l10n)
|
||||
tar2 = env.qt4_l10n('$BUILDDIR/common/qt4_l10n.pot',
|
||||
['$TOP_SRCDIR/src/frontends/qt4/ui/%s' % x for x in src_frontends_qt4_ui_files])
|
||||
env['BUILDERS']['layouts_l10n'] = Builder(action=utils.env_layouts_l10n)
|
||||
tar3 = env.layouts_l10n('$BUILDDIR/common/layouts_l10n.pot',
|
||||
['$TOP_SRCDIR/lib/layouts/%s' % x for x in lib_layouts_files])
|
||||
Alias('update_po', [tar1, tar2, tar3])
|
||||
|
||||
|
||||
if build_po:
|
||||
|
@ -2200,6 +2200,7 @@ lib_layouts_files = Split('''
|
||||
hollywood.layout
|
||||
ijmpc.layout
|
||||
ijmpd.layout
|
||||
isprs.layout
|
||||
jgrga.layout
|
||||
kluwer.layout
|
||||
latex8.layout
|
||||
|
@ -146,6 +146,64 @@ def env_language_l10n(target, source, env):
|
||||
output.close()
|
||||
|
||||
|
||||
def env_qt4_l10n(target, source, env):
|
||||
'''Generate pot file from src/frontends/qt4/ui/*.ui'''
|
||||
output = open(env.File(target[0]).abspath, 'w')
|
||||
pat = re.compile(r'\s*<string>(.*)</string>')
|
||||
prop = re.compile(r'\s*<property.*name.*=.*shortcut')
|
||||
for src in source:
|
||||
input = open(env.File(src).abspath)
|
||||
skipNextLine = False
|
||||
for lineno, line in enumerate(input.readlines()):
|
||||
# looking for a line with <string></string>
|
||||
if skipNextLine:
|
||||
skipNextLine = False
|
||||
continue
|
||||
# skip the line after <property name=shortcut>
|
||||
if prop.match(line):
|
||||
skipNextLine = True
|
||||
continue
|
||||
# get lines that match <string>...</string>
|
||||
if pat.match(line):
|
||||
(string,) = pat.match(line).groups()
|
||||
string = string.replace('&', '&').replace('<', '<').replace('>', '>').replace('"', r'\"')
|
||||
print >> output, '#: %s:%d\nmsgid "%s"\nmsgstr ""\n' % \
|
||||
(relativePath(env, src), lineno+1, string)
|
||||
input.close()
|
||||
output.close()
|
||||
|
||||
|
||||
def env_layouts_l10n(target, source, env):
|
||||
'''Generate pot file from lib/layouts/*.layout and *.inc'''
|
||||
output = open(env.File(target[0]).abspath, 'w')
|
||||
Style = re.compile(r'^Style\s+(.*)')
|
||||
# include ???LabelString???, but exclude comment lines
|
||||
LabelString = re.compile(r'^[^#]*LabelString\S*\s+(.*)')
|
||||
GuiName = re.compile(r'\s*GuiName\s+(.*)')
|
||||
ListName = re.compile(r'\s*ListName\s+(.*)')
|
||||
for src in source:
|
||||
input = open(env.File(src).abspath)
|
||||
for lineno, line in enumerate(input.readlines()):
|
||||
# get lines that match <string>...</string>
|
||||
if Style.match(line):
|
||||
(string,) = Style.match(line).groups()
|
||||
string = string.replace('_', ' ')
|
||||
elif LabelString.match(line):
|
||||
(string,) = LabelString.match(line).groups()
|
||||
elif GuiName.match(line):
|
||||
(string,) = GuiName.match(line).groups()
|
||||
elif ListName.match(line):
|
||||
(string,) = ListName.match(line).groups()
|
||||
else:
|
||||
continue
|
||||
string = string.replace('\\', '\\\\').replace('"', '')
|
||||
if string != "":
|
||||
print >> output, '#: %s:%d\nmsgid "%s"\nmsgstr ""\n' % \
|
||||
(relativePath(env, src), lineno+1, string)
|
||||
input.close()
|
||||
output.close()
|
||||
|
||||
|
||||
def createResFromIcon(env, icon_file, rc_file):
|
||||
''' create a rc file with icon, and return res file (windows only) '''
|
||||
if os.name == 'nt':
|
||||
|
Loading…
Reference in New Issue
Block a user