d: po4a, stub for auto-translate
[software/sisu] / lib / sisu / develop / po4a.rb
index a302e02ea552f814e67a786b1aa1c1b7fb84c5ba..3a93c7fda2329f62d9f2e451a2a4e9b42746e47f 100644 (file)
@@ -65,6 +65,7 @@ module SiSU_Po4a
   class Source
     @@opt_src,@@opt_trn,@@opt_src_,@@opt_trn_,@@md_src,@@md_trn=
       nil,nil,nil,nil,nil,nil
+    @@auto_translation_ = :go
     def initialize(opt,fn=nil)
       @opt,@fn=opt,fn
       #unless @opt.fns =~/(.+?\.(?:-|ssm\.)?sst)$/
@@ -544,6 +545,26 @@ GSUB
           hang
         )
       end
+      def auto_translate?(set=nil)
+        @@auto_translation_=set \
+        ? set
+        : @@auto_translation_
+      end
+      def auto_translation(src_txt) # check for an appropriate request flag
+        begin
+          trans=''
+          unless auto_translate? == :skip
+            require 'timeout'
+            Timeout::timeout(5) {
+              #trans=`trans en:#{@md.opt.f_pth[:lng]} #{src_txt}` #+ ' ,{[G.Tr]},'
+            }
+          end
+          trans
+        rescue
+          auto_translate?(:skip)
+          p 'timeout issues with translation, skip remaining'
+        end
+      end
       def pot_structure_heading(dob_src='',notes_s='',dob_trn='',notes_t='')   #% used to extract the structure of a document
         lv=n=n3=nil
         lv=dob_src.ln
@@ -562,7 +583,13 @@ GSUB
         end
         desc="#{d}#{s_mark}#{instruct}"
         orig="#{s_mark}#{dob_src.obj}"
-        trans=(dob_trn=='') ? '' : "#{s_mark}#{dob_trn.obj}"
+        trans=((dob_trn=='') \
+        || (dob_src.obj == dob_trn.obj)) \
+        ? ''
+        : "#{s_mark}#{dob_trn.obj}"
+        if trans.empty? # and --auto-trans
+          trans=auto_translation(dob_src.obj)
+        end
         util=pot_structure(desc,orig,trans)
         wrapped=util.line_wrap
         @pot[:body] << wrapped << br # main text, contents, body KEEP
@@ -603,7 +630,13 @@ GSUB
             desc="#{d}#{s_mark}#{instruct}"
           end
           orig="#{s_mark}#{dob_src.obj}"
-          trans=(dob_trn=='') ? '' : "#{s_mark}#{dob_trn.obj}"
+          trans=((dob_trn=='') \
+          || (dob_src.obj == dob_trn.obj)) \
+          ? ''
+          : "#{s_mark}#{dob_trn.obj}"
+          if trans.empty? # and --auto-trans
+            trans=auto_translation(dob_src.obj)
+          end
           util=pot_structure(desc,orig,trans)
         elsif dob_src.hang =~/[0-9]/ \
         and dob_src.indent != dob_src.hang
@@ -621,7 +654,13 @@ GSUB
           end
           desc="#{d}#{s_mark}#{instruct}"
           orig="#{s_mark}#{dob_src.obj}"
-          trans=(dob_trn=='') ? '' : "#{s_mark}#{dob_trn.obj}"
+          trans=((dob_trn=='') \
+          || (dob_src.obj == dob_trn.obj)) \
+          ? ''
+          : "#{s_mark}#{dob_trn.obj}"
+          if trans.empty? # and --auto-trans
+            trans=auto_translation(dob_src.obj)
+          end
           util=pot_structure(desc,orig,trans)
         else
           s_mark=desc=orig=trans=''
@@ -636,7 +675,13 @@ GSUB
             end
             desc="#{d}#{s_mark}#{instruct}"
             orig="#{s_mark}#{dob_src.obj}"
-            trans=(dob_trn=='') ? '' : "#{s_mark}#{dob_trn.obj}"
+            trans=((dob_trn=='') \
+            || (dob_src.obj == dob_trn.obj)) \
+            ? ''
+            : "#{s_mark}#{dob_trn.obj}"
+            if trans.empty? # and --auto-trans
+              trans=auto_translation(dob_src.obj)
+            end
           else
             mark=''
             d=dob_src.is.to_s
@@ -647,7 +692,13 @@ GSUB
             end
             desc="#{d}#{s_mark}#{instruct}"
             orig=dob_src.obj
-            trans=(dob_trn=='') ? '' : dob_trn.obj
+            trans=((dob_trn=='') \
+            || (dob_src.obj == dob_trn.obj)) \
+            ? ''
+            : "#{s_mark}#{dob_trn.obj}"
+            if trans.empty? # and --auto-trans
+              trans=auto_translation(dob_src.obj)
+            end
           end
           util=pot_structure(desc,orig,trans)
         end
@@ -674,7 +725,13 @@ GSUB
         end
         desc="#{d}#{s_mark}#{instruct}"
         orig=dob_src.obj
-        trans=(dob_trn=='') ? '' : dob_trn.obj
+        trans=((dob_trn=='') \
+        || (dob_src.obj == dob_trn.obj)) \
+        ? ''
+        : "#{s_mark}#{dob_trn.obj}"
+        if trans.empty? # and --auto-trans
+          trans=auto_translation(dob_src.obj)
+        end
         util=pot_structure(desc,orig,trans)
         unwrapped=util.no_line_wrap_block
         @pot[:body] << unwrapped << br
@@ -690,7 +747,13 @@ GSUB
         end
         desc="#{d}#{s_mark}#{instruct}"
         orig=dob_src.obj
-        trans=(dob_trn=='') ? '' : dob_trn.obj
+        trans=((dob_trn=='') \
+        || (dob_src.obj == dob_trn.obj)) \
+        ? ''
+        : "#{s_mark}#{dob_trn.obj}"
+        if trans.empty? # and --auto-trans
+          trans=auto_translation(dob_src.obj)
+        end
         util=pot_structure(desc,orig,trans)
         unwrapped=util.no_line_wrap_block
         @pot[:body] << unwrapped << br