]> git.lyx.org Git - features.git/commitdiff
Fix bug 2520: Make InsetExternal translateable
authorJürgen Spitzmüller <spitz@lyx.org>
Sat, 23 Jun 2007 07:50:13 +0000 (07:50 +0000)
committerJürgen Spitzmüller <spitz@lyx.org>
Sat, 23 Jun 2007 07:50:13 +0000 (07:50 +0000)
* 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

development/scons/SConstruct
po/Makefile.in.in
po/lyx_pot.py
src/frontends/qt4/QExternal.cpp
src/insets/InsetExternal.cpp

index c964e437b0ce07728a607fd20ba573ac3d62d7d4..c35e11009415821c26fb7c7a3455d72ac62f3fff 100644 (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',
@@ -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} \
index b53e0241e5a124f5be67314556da2e2067bcdf92..2f0bc2c73c8840d75e6325981f9d57d993f00be7 100644 (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.
index fb7578d026412d82bdd0a58b7c5d08ab9835004a..40cb9bc53518e6e62aa27e14fc78a6134a85ff95 100755 (executable)
@@ -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)
 
index 83f009368f71e166d30a0f7d31cdcf6a3b133fdc..ec6f9705c95ae0a58a1c688d2a36eeab9a1ce78e 100644 (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.
index d3a6cb3a258764d1ca3f6539eb6fe29c44367107..091b6149b85e7e3123dfb4c3b01596006bc1d487 100644 (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 &,