mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-22 01:59:02 +00:00
Fix bug 2520: Make InsetExternal translateable
* po/lyx_pot.py: - new function external_l10n: parse external_templates and extract the relevant parts for translation. * development/scons/SConstruct: * po/Makefile.in.in: - use external_l10n * src/insets/InsetExternal.cpp: * src/frontends/qt4/QExternal.cpp: - make eveything translatable git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@18866 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
1fc33d0714
commit
91c6d03678
@ -2043,7 +2043,7 @@ if update_po:
|
||||
['$TOP_SRCDIR/src/tex2lyx/%s' % x for x in src_tex2lyx_header_files + src_tex2lyx_files ]
|
||||
)
|
||||
Alias('update_po', POTFILES_in)
|
||||
# build language_l10n.pot, ui_l10n.pot, layouts_l10n.pot, qt4_l10n.pot
|
||||
# build language_l10n.pot, ui_l10n.pot, layouts_l10n.pot, qt4_l10n.pot, external_l10n
|
||||
# and combine them to lyx.po
|
||||
env['LYX_POT'] = 'python $TOP_SRCDIR/po/lyx_pot.py'
|
||||
lyx_po = env.Command('$BUILDDIR/po/lyx.po',
|
||||
@ -2054,11 +2054,13 @@ if update_po:
|
||||
env.Command('$BUILDDIR/po/layouts_l10n.pot',
|
||||
['$TOP_SRCDIR/lib/layouts/%s' % x for x in lib_layouts_files + lib_layouts_inc_files],
|
||||
'$LYX_POT -b $TOP_SRCDIR -t layouts -o $TARGET $SOURCES'),
|
||||
env.Command('$BUILDDIR/po/languages_l10n.pot', '$TOP_SRCDIR/lib/languages',
|
||||
env.Command('$BUILDDIR/po/languages_l10n.pot', '$TOP_SRCDIR/lib/languages',
|
||||
'$LYX_POT -b $TOP_SRCDIR -t languages -o $TARGET $SOURCES'),
|
||||
env.Command('$BUILDDIR/po/ui_l10n.pot',
|
||||
['$TOP_SRCDIR/lib/ui/%s' % x for x in lib_ui_files],
|
||||
'$LYX_POT -b $TOP_SRCDIR -t ui -o $TARGET $SOURCES'),
|
||||
env.Command('$BUILDDIR/po/external_l10n.pot', '$TOP_SRCDIR/lib/external_templates',
|
||||
'$LYX_POT -b $TOP_SRCDIR -t external -o $TARGET $SOURCES'),
|
||||
], utils.env_cat),
|
||||
['$MSGUNIQ -o $TARGET $SOURCE',
|
||||
'''$XGETTEXT --default-domain=${TARGET.base} \
|
||||
|
@ -376,7 +376,7 @@ ${srcdir}/POTFILES.in: $(POTFILE_IN_DEPS)
|
||||
sort | uniq ) > $@-t \
|
||||
&& mv $@-t $@
|
||||
|
||||
l10n_pots: qt4_l10n.pot layouts_l10n.pot languages_l10n.pot ui_l10n.pot
|
||||
l10n_pots: qt4_l10n.pot layouts_l10n.pot languages_l10n.pot ui_l10n.pot external_l10n.pot
|
||||
cat $^ | \
|
||||
msguniq -o $(DOMAIN).po && rm -f $^
|
||||
|
||||
@ -399,6 +399,9 @@ ui_l10n.pot: $(top_srcdir)/lib/ui/*.ui $(top_srcdir)/lib/ui/*.inc
|
||||
i18n.php: $(POFILES) postats.sh
|
||||
(cd $(srcdir) ; ./postats.sh $(POFILES)) >$@
|
||||
|
||||
external_l10n.pot: $(top_srcdir)/lib/external_templates
|
||||
python $(srcdir)/lyx_pot.py -b $(top_srcdir) -o $@ -t external ${top_srcdir}/lib/external_templates
|
||||
|
||||
force:
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make not to export all variables.
|
||||
|
@ -145,6 +145,55 @@ def languages_l10n(input_files, output, base):
|
||||
output.close()
|
||||
|
||||
|
||||
def external_l10n(input_files, output, base):
|
||||
'''Generate pot file from lib/external_templates'''
|
||||
output = open(output, 'w')
|
||||
Template = re.compile(r'^Template\s+(.*)')
|
||||
GuiName = re.compile(r'\s*GuiName\s+(.*)')
|
||||
HelpTextStart = re.compile(r'\s*HelpText\s')
|
||||
HelpTextSection = re.compile(r'\s*(\S.*)\s*$')
|
||||
HelpTextEnd = re.compile(r'\s*HelpTextEnd\s')
|
||||
i = -1
|
||||
for src in input_files:
|
||||
input = open(src)
|
||||
inHelp = False
|
||||
hadHelp = False
|
||||
prev_help_string = ''
|
||||
for lineno, line in enumerate(input.readlines()):
|
||||
if Template.match(line):
|
||||
(string,) = Template.match(line).groups()
|
||||
elif GuiName.match(line):
|
||||
(string,) = GuiName.match(line).groups()
|
||||
elif inHelp:
|
||||
if HelpTextEnd.match(line):
|
||||
if hadHelp:
|
||||
print >> output, '\nmsgstr ""\n'
|
||||
inHelp = False
|
||||
hadHelp = False
|
||||
prev_help_string = ''
|
||||
elif HelpTextSection.match(line):
|
||||
(help_string,) = HelpTextSection.match(line).groups()
|
||||
help_string = help_string.replace('"', '')
|
||||
if help_string != "" and prev_help_string == '':
|
||||
print >> output, '#: %s:%d\nmsgid ""\n"%s\\n"' % \
|
||||
(relativePath(src, base), lineno+1, help_string)
|
||||
hadHelp = True
|
||||
elif help_string != "":
|
||||
print >> output, '"%s\\n"' % help_string
|
||||
prev_help_string = help_string
|
||||
elif HelpTextStart.match(line):
|
||||
inHelp = True
|
||||
prev_help_string = ''
|
||||
else:
|
||||
continue
|
||||
string = string.replace('"', '')
|
||||
if string != "" and not inHelp:
|
||||
print >> output, '#: %s:%d\nmsgid "%s"\nmsgstr ""\n' % \
|
||||
(relativePath(src, base), lineno+1, string)
|
||||
input.close()
|
||||
output.close()
|
||||
|
||||
|
||||
Usage = '''
|
||||
lyx_pot.py [-b|--base top_src_dir] [-o|--output output_file] [-h|--help] -t|--type input_type input_files
|
||||
|
||||
@ -158,6 +207,7 @@ where
|
||||
layouts: lib/layouts/*
|
||||
qt4: qt4 ui files
|
||||
languages: file lib/languages
|
||||
external: external templates file
|
||||
'''
|
||||
|
||||
if __name__ == '__main__':
|
||||
@ -177,7 +227,7 @@ if __name__ == '__main__':
|
||||
base = value
|
||||
elif opt in ['-t', '--type']:
|
||||
input_type = value
|
||||
if input_type not in ['ui', 'layouts', 'qt4', 'languages'] or output is None:
|
||||
if input_type not in ['ui', 'layouts', 'qt4', 'languages', 'external'] or output is None:
|
||||
print 'Wrong input type or output filename.'
|
||||
sys.exit(1)
|
||||
if input_type == 'ui':
|
||||
@ -186,6 +236,8 @@ if __name__ == '__main__':
|
||||
layouts_l10n(args, output, base)
|
||||
elif input_type == 'qt4':
|
||||
qt4_l10n(args, output, base)
|
||||
elif input_type == 'external':
|
||||
external_l10n(args, output, base)
|
||||
else:
|
||||
languages_l10n(args, output, base)
|
||||
|
||||
|
@ -544,7 +544,7 @@ void QExternal::build_dialog()
|
||||
|
||||
for (std::vector<string>::const_iterator cit = templates.begin();
|
||||
cit != templates.end(); ++cit) {
|
||||
dialog_->externalCO->addItem(toqstr(*cit));
|
||||
dialog_->externalCO->addItem(qt_(*cit));
|
||||
}
|
||||
|
||||
// Fill the origins combo
|
||||
@ -604,7 +604,7 @@ void QExternal::updateTemplate()
|
||||
{
|
||||
external::Template templ =
|
||||
controller().getTemplate(dialog_->externalCO->currentIndex());
|
||||
dialog_->externalTB->setPlainText(toqstr(templ.helpText));
|
||||
dialog_->externalTB->setPlainText(qt_(templ.helpText));
|
||||
|
||||
// Ascertain which (if any) transformations the template supports
|
||||
// and disable tabs hosting unsupported transforms.
|
||||
|
@ -577,8 +577,9 @@ docstring const getScreenLabel(InsetExternalParams const & params,
|
||||
return support::bformat((_("External template %1$s is not installed")),
|
||||
from_utf8(params.templatename()));
|
||||
// FIXME UNICODE
|
||||
docstring gui = _(ptr->guiName);
|
||||
return from_utf8(external::doSubstitution(params, buffer,
|
||||
ptr->guiName, false));
|
||||
to_utf8(gui), false));
|
||||
}
|
||||
|
||||
void add_preview_and_start_loading(RenderMonitoredPreview &,
|
||||
|
Loading…
Reference in New Issue
Block a user