]> git.lyx.org Git - lyx.git/blobdiff - development/scons/SConstruct
Scons: finalize update_po target.
[lyx.git] / development / scons / SConstruct
index aa16849ce7f9b617756226793f7e3dc698835c85..6f38ec600076bdaa33ef22bda99b40cd6cf829d8 100644 (file)
@@ -1991,37 +1991,29 @@ if update_po:
     env['LYX_POT'] = 'python $TOP_SRCDIR/po/lyx_pot.py'
     lyx_po = env.Command('$BUILDDIR/po/lyx.po',
         env.Command('$BUILDDIR/po/all.po',
-            [env.Command('$BUILDDIR/po/language_l10n.pot', '$TOP_SRCDIR/lib/languages', 
-                '$LYX_POT -b $TOP_SRCDIR -t languages -o $TARGET $SOURCES'),
-             env.Command('$BUILDDIR/po/qt4_l10n.pot', 
+            [env.Command('$BUILDDIR/po/qt4_l10n.pot', 
                 ['$TOP_SRCDIR/src/frontends/qt4/ui/%s' % x for x in src_frontends_qt4_ui_files],
                 '$LYX_POT -b $TOP_SRCDIR -t qt4 -o $TARGET $SOURCES'),
              env.Command('$BUILDDIR/po/layouts_l10n.pot', 
                 ['$TOP_SRCDIR/lib/layouts/%s' % x for x in lib_layouts_files],
                 '$LYX_POT -b $TOP_SRCDIR -t layouts -o $TARGET $SOURCES'),
+             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'),
              ], utils.env_cat),
-        '$MSGUNIQ -o $TARGET $SOURCE'
-    )
-    # create a builder that generate real po files
-    env['BUILDERS']['xgettext'] = Builder(action=['''$XGETTEXT \
-        --default-domain=${SOURCE.filebase} \
-        --directory=$TOP_SRCDIR \
-           --add-comments=TRANSLATORS: \
-        --language=C++ --join-existing --keyword=_ --keyword=N_ --keyword=qt_ \
-           --files-from=$TOP_SRCDIR/po/POTFILES.in \
-           --copyright-holder='LyX Developers' \
-           --msgid-bugs-address='lyx-devel@lists.lyx.org' ''',
-        Copy('$TARGET', '$SOURCE')]
+            ['$MSGUNIQ -o $TARGET $SOURCE',
+             '''$XGETTEXT --default-domain=${TARGET.base} \
+                --directory=$TOP_SRCDIR --add-comments=TRANSLATORS: \
+                --language=C++ --join-existing --keyword=_ --keyword=N_ --keyword=qt_ \
+                --files-from=$TOP_SRCDIR/po/POTFILES.in \
+                --copyright-holder='LyX Developers' \
+                --msgid-bugs-address='lyx-devel@lists.lyx.org' ''']
         )
-    env['BUILDERS']['msgmerge'] = Builder(action=[
-        '$MSGMERGE -o $TARGET $SOURCE ${TARGET.base}.po',
-        Copy('${TARGET.base}.po', '$TARGET')]
-        )
-    #   ==> lyx.pot
-    lyx_pot = env.xgettext('$BUILDDIR/po/lyx.pot', lyx_po)
+    # copy lyx.po to lyx.pot
+    lyx_pot = env.Command('$BUILDDIR/po/lyx.pot', lyx_po,
+        Copy('$TARGET', '$SOURCE'))
     #
     import glob
     # files to translate
@@ -2030,6 +2022,17 @@ if update_po:
     languages = None
     if env.has_key('languages'):
         languages = env.make_list(env['lanauges'])
+    # merge. if I use lan.po as $TARGET, it will be removed
+    # before it is merged. In this builder,
+    # $BUILDDIR/po/lang.po is merged from po/lang.po and $BUILDDIR/po/lyx.pot
+    # and is copied to po/lang.po
+    env['BUILDERS']['msgmerge'] = Builder(action=[
+        '$MSGMERGE $TOP_SRCDIR/po/${TARGET.filebase}.po $SOURCE -o $TARGET',
+        Copy('$TOP_SRCDIR/po/${TARGET.filebase}.po', '$TARGET')]
+        )
+    # get dependency files from POTFILES.in
+    dep_files = ['$TOP_SRCDIR/%s' % x.strip() for x in open(env.File('$TOP_SRCDIR/po/POTFILES.in').abspath).readlines()]
+    dep_files.append('$TOP_SRCDIR/po/POTFILES.in')
     # for each po file, generate pot
     for po_file in transfiles:
         # get filename
@@ -2038,9 +2041,10 @@ if update_po:
         country = fname.split('.')[0]
         #
         if not languages or country in languages:
-            # merge po files
-            # FIXME: Depends on POTFILES.in and its content
-            Alias('update_po', env.msgmerge(po_file + '_new', lyx_pot))
+            # merge po files, the generated lan.po_new file is copied to lan.po file.
+            po = env.msgmerge('$BUILDDIR/po/%s.po' % country, lyx_pot)
+            env.Depends(po, dep_files)
+            Alias('update_po', po)
 
 
 if build_po: