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:
Jürgen Spitzmüller 2007-06-23 07:50:13 +00:00
parent 1fc33d0714
commit 91c6d03678
5 changed files with 65 additions and 7 deletions

View File

@ -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',
@ -2059,6 +2059,8 @@ if update_po:
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} \

View File

@ -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.

View File

@ -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)

View File

@ -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.

View File

@ -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 &,